Nature Communicationsのデータ分析に従ってください:otu微分存在量分析と火山プロット表示結果のためのR言語DESeq2パッケージ...

論文

微生物叢の異なる存在量の方法は、38のデータセット間で異なる結果を生成します

データリンク

https://figshare.com/articles/dataset/16S_rRNA_Microbiome_Datasets/14531724

コードリンク

https://github.com/nearinj/Comparison_of_DA_microbiome_methods

この人のgithubホームページには、他の論文のデータとコードがあります

https://github.com/jnmacdonald/differential-abundance-analysisこのリンクには、ディファレンシャルアバンダンス分析というタイトルのコードがたくさんあります。

過去2日間、差量分析のためにotu存在量データを使用してメタゲノムを観察していましたが、この論文を見つけて要約を読みました。異なる存在量分析方法で得られた結果の類似点と相違点を比較しているようです。DESeq2を使用した示差アバンダンス分析については、ここでコードを繰り返します

ここで使用するデータセットは

  • 豊富なデータArcticFireSoils_genus_table.tsv

  • パケットデータArcticFireSoils_meta.tsv

ここに質問があります:論文によって提供された2つの豊富なテーブルデータがあり、もう1つはまれな接尾辞が付いています。当面の間、2つの違いはわかりません。

1つ目は、データセットを読み取ることです

ASV_table <- read.table("metagenomics/dat01/ArcticFireSoils_genus_table.tsv", 
                        sep="\t", 
                        skip=1, 
                        header=T, 
                        row.names = 1,
                        comment.char = "", 
                        quote="", check.names = F)
groupings <- read.table("metagenomics/dat01/ArcticFireSoils_meta.tsv", 
                        sep="\t", 
                        row.names = 1, 
                        header=T, 
                        comment.char = "", 
                        quote="", 
                        check.names = F)
dim(ASV_table)
dim(groupings)
groupings$Fire<-factor(groupings$Fire)

ここでは、グループ化を表す係数を割り当てる必要があります。そうしないと、後のdeseq2のステップで警告メッセージが表示されます。

アバンダンスデータのサンプル名とグループ化されたデータのサンプル名が同じ順序であるかどうかを確認します

identical(colnames(ASV_table), rownames(groupings))

一貫性のないfalseを返す

2つのサンプル名の共通部分を取ります

rows_to_keep <- intersect(colnames(ASV_table), rownames(groupings))

交差点を取得した結果に基づいてサンプルを再選択します

groupings <- groupings[rows_to_keep,,drop=F]
ASV_table <- ASV_table[,rows_to_keep]

質問:ここの括弧内のドロップパラメータの機能は何ですか?

2つのデータセットのサンプル名の順序をもう一度判断します

identical(colnames(ASV_table), rownames(groupings))

今回はTRUEを返します

グループ化ファイルの列名を変更します

colnames(groupings)[1] <- "Groupings"

示差存在量分析

library(DESeq2)
dds <- DESeq2::DESeqDataSetFromMatrix(countData = ASV_table,
                                      colData=groupings,
                                      design = ~ Groupings)
dds_res <- DESeq2::DESeq(dds, sfType = "poscounts")

res <- results(dds_res, 
               tidy=T, 
               format="DataFrame",
               contrast = c("Groupings","Fire","Control"))
head(res)
45e2878c8d39f0c38d462c21463e86d6.png
image.png

火山地図コード

DEG<-res
logFC_cutoff<-2
DEG$change<-as.factor(ifelse(DEG$pvalue<0.05&abs(DEG$log2FoldChange)>logFC_cutoff,
                             ifelse(DEG$log2FoldChange>logFC_cutoff,"UP","DOWN"),
                             "NOT"))
this_title <- paste0('Cutoff for logFC is ',round(logFC_cutoff,3),
                     '\nThe number of up gene is ',nrow(DEG[DEG$change =='UP',]) ,
                     '\nThe number of down gene is ',nrow(DEG[DEG$change =='DOWN',]))
DEG<-na.omit(DEG)
library(ggplot2)
ggplot(data=DEG,aes(x=log2FoldChange,
                    y=-log10(pvalue),
                    color=change))+
  geom_point(alpha=0.8,size=3)+
  labs(x="log2 fold change")+ ylab("-log10 pvalue")+
  ggtitle(this_title)+theme_bw(base_size = 20)+
  theme(plot.title = element_text(size=15,hjust=0.5),)+
  scale_color_manual(values=c('#a121f0','#bebebe','#ffad21')) -> p1
p1+xlim(NA,10)+ylim(NA,30) -> p2

library(patchwork)
p1+p2
9313d1d28e7623bfbff338de0e0cc324.png
image.png

今日のツイートのサンプルデータとコードは、昨日の広告ツイートのコメント領域で取得できます。青いテキストをクリックして、昨日の広告ツイートに移動します。

削除するのに12時間、ファンを送るために199、0.01で購入したExcel練習本!

私の公開番号に注意を払うためにみんなを歓迎します

XiaoMingのデータ分析ノート

Xiaomingのデータ分析ノートブックの公開アカウントは主に次のことを共有しています。1。データ分析とデータ視覚化のためのR言語とpythonの簡単な例;2。トランスクリプトミクス、ゲノミクス、人口遺伝学の文献に関連する園芸植物に関するメモを読む;3.バイオインフォマティクス入門研究資料を学ぶあなた自身の研究ノート!

おすすめ

転載: blog.csdn.net/weixin_45822007/article/details/124223966