這篇Nature子刊文章的蛋白組學數據PCA分析竟花費了我兩天時間來重現|附全過程代碼

2021-02-25 生信寶典

2020年4月14日,Sanger研究團隊於nature communication在線發表了題為Single-cell transcriptomics identifies an effectorness gradient shaping the response of CD4+ T cells to cytokines的研究內容,作者使用蛋白質組學、bulk RNA-seq和單細胞轉錄組測序對人體40,000個以上的naïve and memory CD4+ T cells進行分析,發現細胞類型之間的細胞因子反應差異很大。memory T細胞不能分化為Th2表型,但可以響應iTreg極化獲得類似Th17的表型。單細胞分析表明,T細胞構成了一個轉錄連續體(transcriptional continuum),從幼稚到中樞和效應記憶T細胞,形成了一種效應梯度,並伴隨著趨化因子和細胞因子表達的增加。最後,作者表明,T細胞活化和細胞因子反應受效應梯度的影響。

該文獻通過蛋白質組學((液相色譜-串聯質譜法,LC-MS/MS)進行了探索性分析,樣品對應於從健康個體的外周血中分離的幼稚和記憶T細胞,並用多種細胞因子刺激5天,每個條件平均3個生物學重複。

這次復現Fig1cPCA圖和Fig2aPCA圖的另一部分,這次作者是通過蛋白組學數據進行PCA的展現:

以上是Fig1c原圖,圖注為「PCA plots from the whole transcriptome of TN and TM cells. Different colors correspond to cell types and different shades to stimulation time points. PCA plots were derived using 21 naive and 19 memory T cell samples for proteomics」

以上為Fig 2a原圖,圖注為「PCA plot from the full transcriptome of TN and TM cells following five days of cytokine stimulations. Only stimulated cells were included in this analysis. PCA plots were derived using 18 naive and 17 memory T cells samples 」

我們需要復現該圖之前,先需要下載數據,可以點擊https://www.opentargets.org/projects/effectorness對proteomics的abundances數據和metadata數據進行下載,然後進行以下步驟:

library(SummarizedExperiment)
library(annotables)
library(rafalib)
library(ggplot2)
library(ggrepel)
library(limma)

加載數據

加載標準化後的豐度:

MassSpec_data <- read.table("NCOMMS-19-7936188_MassSpec_scaled_abundances.txt", header = T, stringsAsFactors = F)
View(MassSpec_data)
#從以上可以看出,每列除了代表每個樣本外,前三列分別為Protein_id,Gene_id和Gene_name,每行代表一個蛋白

建立SummarizedExperiment object

創建帶有蛋白質注釋的dataframe

protein_annotations <- data.frame(MassSpec_data[,c("Protein_id","Gene_id","Gene_name")], row.names = MassSpec_data$Gene_name)
rownames(MassSpec_data) <- MassSpec_data$Gene_name#構成一個由"Protein_id","Gene_id","Gene_name"的數據框
MassSpec_data <- MassSpec_data[,-c(1:3)]

創建帶有sample注釋的dataframe

sample_ids <- colnames(MassSpec_data)
sample_annotations <- data.frame(row.names = sample_ids,
donor_id = sapply(sample_ids, function(x){strsplit(x, split = "_")[[1]][1]}),
cell_type = paste("CD4",
sapply(sample_ids, function(x){strsplit(x, split = "_")[[1]][3]}),
sep="_"),
cytokine_condition = sapply(sample_ids, function(x){strsplit(x, split = "_")[[1]][4]}),
stringsAsFactors = T)
sample_annotations$activation_status <- ifelse(sample_annotations$cytokine_condition == "resting", "Resting", "Activated")
View(sample_annotations)

創建relevant metadata的變量

meta <- list(
Study="Mapping cytokine induced gene expression changes in human CD4+ T cells",
Experiment="Quantitative proteomics (LC-MS/MS) panel of cytokine induced T cell polarisations",
Laboratory="Trynka Group, Wellcome Sanger Institute",
Experimenter=c("Eddie Cano-Gamez",
"Blagoje Soskic",
"Deborah Plowman"),
Description="To study cytokine-induced cell polarisation, we isolated human naive and memory CD4+ T cells in triplicate from peripheral blood of healthy individuals. Next, we polarised the cells with different cytokine combinations linked to autoimmunity and performed LC-MS/MS.",
Methdology="LC-MS/MS with isobaric labelling",
Characteristics="Data type: Normalised, scaled protein abundances",
Date="September, 2019",
URL="https://doi.org/10.1101/753731"
)

建立SummarizedExperiment object

proteomics_data <- SummarizedExperiment(assays=list(counts=as.matrix(MassSpec_data)),
colData=sample_annotations,
rowData=protein_annotations,
metadata=meta)
saveRDS(proteomics_data, file="proteinAbundances_summarizedExperiment.rds")

數據可視化

將NA值設置為零
注意:此操作僅出於可視化目的。執行統計測試時,NA不會設置為零。

assay(proteomics_data)[is.na(assay(proteomics_data))] <- 0

定義函數:

提取蛋白質表達值;

進行主成分分析;

返回一個矩陣,其中包含每個樣品和樣品注釋的PC坐標;

返回每個主要成分解釋的方差百分比。

getPCs <- function(exp){
pcs <- prcomp(t(assay(exp)))
pVar <- pcs$sdev^2/sum(pcs$sdev^2)
pca.mat <- data.frame(pcs$x)
pca.mat$donor_id <- colData(exp)$donor_id
pca.mat$cell_type <- colData(exp)$cell_type
pca.mat$cytokine_condition <- colData(exp)$cytokine_condition
pca.mat$activation_status <- colData(exp)$activation_status
res <- list(pcs = pca.mat, pVar=pVar)
return(res)
}

對所有樣本執行PCA

pcs <- getPCs(proteomics_data)

ggplot(data=pcs$pcs, aes(x=PC1, y=PC2, color=cell_type, shape=activation_status)) +
geom_point(size = 8) +
xlab(paste0("PC1:", round(pcs$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs$pVar[2]*100), "% variance")) +
scale_colour_manual(values = c("#5AB4AC","#AF8DC3")) +
scale_alpha_discrete(range = c(0.5,1)) +
coord_fixed() + theme_bw() +
theme(panel.grid = element_blank())

去掉個體間變異性:

proteomics_data_regressed <- proteomics_data
assay(proteomics_data_regressed) <- removeBatchEffect(assay(proteomics_data_regressed),
batch = factor(as.vector(colData(proteomics_data_regressed)$donor_id))
)

重新計算PCA:

pcs <- getPCs(proteomics_data_regressed)

ggplot(data=pcs$pcs, aes(x=PC1, y=PC2, color=cell_type, shape=activation_status)) +
geom_point(size = 8) +
xlab(paste0("PC1:", round(pcs$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs$pVar[2]*100), "% variance")) +
scale_colour_manual(values = c("#5AB4AC","#AF8DC3")) +
scale_alpha_discrete(range = c(0.5,1)) +
coord_fixed() + theme_bw() +
theme(panel.grid = element_blank())

原圖

細胞類型特異性分析

將naive和memory T細胞樣本分為僅包含受刺激細胞的兩個不同數據集。

proteomics_data_naive <- proteomics_data[,(proteomics_data$cell_type=="CD4_naive") & (proteomics_data$activation_status=="Activated")]
proteomics_data_memory <- proteomics_data[,(proteomics_data$cell_type=="CD4_memory") & (proteomics_data$activation_status=="Activated")]

Naive T cells

對 5 days-stimulated naive T cells進行PCA:

pcs_naive <- getPCs(proteomics_data_naive)
ggplot(data=pcs_naive$pcs, aes(x=PC1, y=PC2)) + geom_point(aes(color=donor_id), size=8) +
xlab(paste0("PC1:", round(pcs_naive$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs_naive$pVar[2]*100), "% variance")) +
coord_fixed() + theme_bw() +
theme(plot.title=element_text(size=20, hjust=0.5), axis.title=element_text(size=14), panel.grid = element_blank(), axis.text=element_text(size=12),legend.text=element_text(size=12), legend.title=element_text(size=12), legend.key.size = unit(1.5,"lines"))

去掉個體間變異性:

assay(proteomics_data_naive) <- removeBatchEffect(assay(proteomics_data_naive),
batch = factor(as.vector(colData(proteomics_data_naive)$donor_id))
)
pcs_naive <- getPCs(proteomics_data_naive)
ggplot(data=pcs_naive$pcs, aes(x=PC1, y=PC2, color=cytokine_condition)) +
geom_point(size = 8) + geom_label_repel(aes(label=cytokine_condition, color=cytokine_condition)) +
xlab(paste0("PC1: ", round(pcs_naive$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs_naive$pVar[2]*100), "% variance")) +
scale_colour_brewer(palette = "Dark2") +
scale_fill_brewer(palette = "Dark2") +
coord_fixed() + theme_bw() +
theme(panel.grid = element_blank(), legend.position = "none")

刪除由PCA標識的異常樣本:

proteomics_data_naive <- proteomics_data_naive[, colnames(proteomics_data_naive) != "D257_CD4_naive_Th1"]

pcs_naive <- getPCs(proteomics_data_naive)

ggplot(data=pcs_naive$pcs, aes(x=PC1, y=PC2, color=cytokine_condition)) +
geom_point(size = 8) + geom_label_repel(aes(label=cytokine_condition, color=cytokine_condition)) +
xlab(paste0("PC1: ", round(pcs_naive$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs_naive$pVar[2]*100), "% variance")) +
scale_colour_brewer(palette = "Dark2") +
scale_fill_brewer(palette = "Dark2") +
coord_fixed() + theme_bw() +
theme(panel.grid = element_blank(), legend.position = "none")

原圖

Memory T cells

again。。。

Performing PCA on 5 days-stimulated memory T cells only.
```{r compute_pca_naive, message=FALSE, warning=FALSE}
pcs_memory <- getPCs(proteomics_data_memory)

ggplot(data=pcs_memory$pcs, aes(x=PC1, y=PC2)) + geom_point(aes(color=donor_id), size=8) +
xlab(paste0("PC1:", round(pcs_memory$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs_memory$pVar[2]*100), "% variance")) +
coord_fixed() + theme_bw() +
theme(plot.title=element_text(size=20, hjust=0.5), axis.title=element_text(size=14), panel.grid = element_blank(), axis.text=element_text(size=12),legend.text=element_text(size=12), legend.title=element_text(size=12), legend.key.size = unit(1.5,"lines"))

Regressing out inter-individual variability

assay(proteomics_data_memory) <- removeBatchEffect(assay(proteomics_data_memory),
batch = factor(as.vector(colData(proteomics_data_memory)$donor_id))
)

再次計算PCs

pcs_memory <- getPCs(proteomics_data_memory)

ggplot(data=pcs_memory$pcs, aes(x=PC1, y=PC2, color=cytokine_condition)) +
geom_point(size = 8) + geom_label_repel(aes(label=cytokine_condition, color=cytokine_condition)) +
xlab(paste0("PC1: ", round(pcs_memory$pVar[1]*100), "% variance")) +
ylab(paste0("PC2: ", round(pcs_memory$pVar[2]*100), "% variance")) +
scale_colour_brewer(palette = "Dark2") +
scale_fill_brewer(palette = "Dark2") +
coord_fixed() + theme_bw() +
theme(panel.grid = element_blank(), legend.position = "none")

原圖

基本分布還是差不多的,,,,

快去試一試呀!

你可能還想看往期精品(點擊圖片直達文字對應教程)

後臺回復「生信寶典福利第一波」或點擊閱讀原文獲取教程合集

相關焦點

  • 「蛋白組學研究」熱門DIA技術3篇文章總計IF:66分
    主要技術:PCT-SWATH/DIA中文標題:將組織活檢樣品快速質譜轉換為永久定量數字蛋白質組圖譜這篇文章中,作者用PCT-DIA技術方法將來自9個腎癌病人的18個組織切片分別轉化為(DIA)SWATH-MS多肽離子碎片譜圖,並從這些譜圖中對2000個蛋白樣本進行定性和定量分析。
  • Nature Plants|多組學數據系統分析擬南芥茉莉酸信號通路
    作者採用myc2擬南芥突變體作為對比,對生長了3天的幼苗進行不同時間點的JA處理,綜合轉錄組、蛋白質組、磷酸化修飾組和組蛋白修飾的多組學分析策略來揭示擬南芥JA響應的複雜網絡。圖1 實驗設計和組學數據分析MYC2和MYC3通過調控大量轉錄因子活性激活植物JA響應對JA處理不同時間擬南芥幼苗轉錄數據分析發現共有
  • Cell上的經典蛋白組學、磷酸化蛋白組學、WES多組學聯合分析文獻
    蛋白質的磷酸化和去磷酸化這一可逆過程調節著包括細胞增殖、發育、分化、信號轉導、細胞凋亡、神經活動、肌肉收縮及腫瘤發生等過程在內的所有生命活動。全外顯子捕獲測序(WES)技術以其相對較低的成本而受到大多數研究者的青睞。
  • 2020年10分+純生信文章帶你領略Nature子刊之驅動突變文章套路
    因為TCGA計劃涉及到數據類型比較多,僅僅是DNA層面就有WGS,WES,SNP6.0晶片的數據,在收錄的一萬多樣本種有WGS數據的有兩千多個,PCAWG計劃就。是整合這其中所有的WGS數據結果。下面我們就來分析一下這篇10分+純生信文章的研究套路吧,帶大家發現即便是10分+生信文章也逃不過酸菜校長總結的「挑、圈、聯、靠」四字訣!
  • 中國學者Nature子刊封面文章:首個蘭花基因組完整序列
    中國學者Nature子刊封面文章:首個蘭花基因組完整序列來源:生物通 2014-11-26  11月24日Nature Genetics雜誌以封面文章的形式公布了植物界種類最豐富的家族之一:蘭花(orchid)的全基因組測序結果。
  • PCAWG聯盟6篇Nature、15篇Nature子刊以前所未有的規模揭示...
    早在2001年對首個人類基因組進行測序後,腫瘤的全面基因組表徵就成為癌症研究人員的一個主要目標。從那時起,測序技術和分析工具取得的進展使得這個研究領域蓬勃發展。在發表在最新一期Nature期刊的6篇論文中,全基因組泛癌分析(Pan-Cancer Analysis of Whole Genomes, PCAWG)聯盟進行了迄今為止最全面、最雄心勃勃的癌症基因組薈萃分析。
  • 我的三篇Nature子刊之旅
    子刊一作,第3篇日前返修已於昨日返修結束擇期發表。當前研究方向主要集中在免疫組庫測序,個體化醫療與基因編輯這三個方向交叉學科領域,屬於雜而不精的混子狀態,國外求學,因疫情回國。背景交代完畢,話不多說,現在開始講述下三篇論文的艱難搶發之路。
  • 蛋白組學/代謝組學如何快速從主流資料庫中獲取人/小鼠數據?
    生物信息學的應用變得尤為重要,在生物領域從基因測序,到基因編輯,再到基因療法的精準醫療,由生物科技引發的又一場變革正悄然而至。試問大家做好準備迎接它到來了嗎? 本次分享的主題為:如何快速獲取海量數據?他花了3分鐘就完成了我三個周的工作!◆雲平臺:歐易/鹿明雲 | 免費的聚類熱圖不試試嗎?
  • 蛋白組學/代謝組學如何快速從主流資料庫中獲取人/小鼠數據?
    隨著生物科技的迅速發展,每天都會有海量的生物學數據產生,如何有效的分析這些「生物學大數據」?生物信息學的應用變得尤為重要,在生物領域從基因測序,到基因編輯,再到基因療法的精準醫療,由生物科技引發的又一場變革正悄然而至。試問大家做好準備迎接它到來了嗎?本次分享的主題為:如何快速獲取海量數據?
  • 機器學習算法一覽(附python和R代碼)
    對我來說,如今最令我激動的就是計算技術和工具的普及,從而帶來了計算的春天。作為一名數據科學家,我可以建造一個數據處理系統來進行複雜的算法運算,這樣每小時能賺幾美金。可是學習這些算法卻花了我無數個日日夜夜。 那麼誰能從這篇文章裡收益最多呢?
  • 病理組學的套路可以這麼發!還發到了Nature子刊
    大家好,我是阿琛。還記得在三十六策中,酸菜老師總結在基礎科研中有四大金剛,分別是基因組學,轉錄組學,蛋白組學,以及代謝組學。而在近年來,隨著各個領域中大數據的迅速興起,人工智慧這一新興領域也得以快速發展,各種組學技術和分析算法的開發也同樣進入了快車道。其中,人工智慧在影像診斷和病理分析領域中的應用更是得到了廣泛的關注。
  • 10篇Nature Communications文章核心代碼分享!
    在閱讀文獻的過程中發現一些純生信的文章會在一些高分雜誌中共享代碼,主要集中在Cell Reports,Nature
  • 為ML帶來拓撲學基礎,Nature子刊提出拓撲數據分析方法
    該數學家提出的理論已經被 Nature 子刊《Machine Intelligence》接收,該論文的作者表示,這種新方法可以稱為「拓撲數據分析(TDA)」。從數學理論的角度來理解並提升機器學習方法,這也是近來非常有潛力的研究方向。
  • 用 PCA 方法進行數據降維
    下面我們來用PCA具體來分析一下該數據集,首先先看看該數據在選取4個主成分下的情況,這時候其主成分的數量和原數據的維度數相等。其結果如圖5所示。接下來我們就只用前兩個主成分來分析原數據,將兩個主成分的數據轉換成dataframe格式,然後再加上一列原數據中species的數據,代碼如下,結果如圖6所示。
  • Nature子刊:北大劉穎/李川昀揭示組蛋白去乙醯化酶調控線粒體應激...
    Nature子刊:北大劉穎/李川昀揭示組蛋白去乙醯化酶調控線粒體應激反應和壽命 2020-09-21 07:20 來源:澎湃新聞·澎湃號·湃客
  • 使用PCA可視化數據
    主成分分析(PCA)是一個很好的工具,可以用來降低特徵空間的維數。PCA的顯著優點是它能產生不相關的特徵,並能提高模型的性能。它可以幫助你深入了解數據的分類能力。在本文中,我將帶你了解如何使用PCA。將提供Python代碼,完整的項目可以在GitHub連結:https://github.com/conorosully/medium-articles。
  • 大年初一,單細胞分析從nature communication開始
    計劃為大家準備3篇論著和兩篇綜述,3篇論著已經找好了,分為三個階段,分別來自:Cell Report(沒錯,就是前段時間被某個事件誤傷的那本Cell 子刊)、Nature Communication以及Nature Medicine。綜述的文章我還沒找好,所以沒辦法放出來截圖。
  • Nature子刊一周連發兩篇研究,我被相反的結果整...
    男女學數理化,腦迴路不一樣?  第一篇,Nature子刊Science of Learning,11月1日發表,作者來自佛羅裡達國際大學、德拉瓦大學、天普大學、卓克索大學。  一周後,同樣發表在《Science of Learning》文章指出,男女在學習數學這件事情上沒有差異,至少在兒童階段是這樣的。  這篇文章的作者,美國CMU神經科學教授Jessica Cantlon指出,過去有一些研究證明男女在學習理科的能力上存在差距,但這些研究都沒有將生物學差異和社會文化的影響分開。
  • 質譜「跨界」醫學 妙用蛋白組學分析——訪威斯康星大學麥迪遜分校...
    而Top-down技術則不再需要酶切的過程,可以直接對完整的蛋白——包括翻譯後修飾蛋白以及其它一些大片段蛋白測序,而非僅僅針對多肽,這就使得與翻譯後修飾相關的信息能最大程度的保存下來。基於top-down質譜技術的蛋白質組分析是表徵完整蛋白質組的新興手段,它可以對來自於全細胞或組織裂解液的複雜混合物中的完整蛋白進行快速、靈敏的分析,提供一個系統、定量的蛋白質評估。
  • 《自然》:23篇文章,1300多人參與,人類癌症全基因組解鎖!
    此前,對癌基因的研究主要集中在蛋白質編碼基因,但這隻佔所有基因的1%。為了探索剩餘的99%基因組,國際癌症基因組協會/癌症基因組圖譜計劃(ICGC/TCGA) 組織了全基因組泛癌分析(PCAWG)項目,對38個癌種,超2600例原發癌症和它們對應的正常組織進行全基因組測序和綜合分析,以期為人類解鎖盛大的癌症全基因組「密碼」。全部內容發表於《自然》及其子刊。