本プロトコルは、生データから機能的濃縮解析までのバルクRNA-seqプロセスの解析のための完全なパイプラインを確立します。
Method Article
* These authors contributed equally
本プロトコルは、生データから機能的濃縮解析までのバルクRNA-seqプロセスの解析のための完全なパイプラインを確立します。
非アルコール性脂肪肝(NAFL)は通常良性の病気と考えられています。しかし、非アルコール性脂肪性肝炎(NASH)に進行すると、患者は末期肝疾患を発症するリスクが大幅に高まります。多くの研究がNAFLからNASHへの移行の分子メカニズムを解明しようとしています。高スループットシーケンシング技術(バルクRNA-seqなど)は、トランスクリプトームを調べることで、分子の発現、シグナル伝達経路の活性化、疾患進行に関連するその他の要因を明らかにすることで、研究者により深い理解をもたらしました。研究者が病気治療の潜在的な標的を特定するために分析できる豊富なオープンソースデータがあります。しかし、トランスクリプトームの上流解析のための効率的かつ信頼性の高いプロセスが不足しているため、関連研究は制約を受けています。ここでは、再現性が高くユーザーフレンドリーな上流解析と関連する差異遺伝子解析パイプラインを提供し、プライベートまたは公開データの標準化された処理と詳細な解析を実現します。パイプラインは4つのステップに分かれています:(1) データの品質管理;(2) 遺伝子マッピング;(3) 差異遺伝子解析;および(4)関数解析。このプロセスは、疾患変換の分子メカニズムを明らかにし、Bulk RNA-seqデータの解析を通じて潜在的な薬物標的や治療アプローチのスクリーニングを支援することを目的としています。
非アルコール性脂肪肝疾患(NAFLD)は、世界的に最も多く見られる慢性肝疾患であり、人口の4分の1以上に影響を及ぼしています。近年、その発生率は劇的に増加しています。1,2,3。増加する病気の負担、特にそのより進行した形態である非アルコール性脂肪肝炎(NASH)は、世界的な健康上の大きな課題であり、重い経済的負担となっています。NAFLDの第一段階は非アルコール性脂肪肝(NAFL)で、炎症や線維化を伴い、NASHへと進行することがあります。後者は肝硬変や肝細胞癌(HCC)を含む末期肝疾患への進行リスクを大幅に高めます5,6,7。HCCの発症率と死亡率はNASHの増加と関連しており、2030年までに肝移植の主要な適応となると予想されています。しかし、NAFLDの臨床進行は非常に異質であり、関連薬剤の開発を著しく妨げるため、関与する分子メカニズムを正確に探求することが特に重要です。
細胞組成情報のバルクRNA-seqベースの獲得は、さまざまな疾患の病因を著しく明らかにすることができます。近年、モデル生物とヒトを対象に多数の大量のRNA-seq研究が行われ、NASH進行13、14、15の遺伝子発現の違いを明らかにし、新たな治療標的を特定しようとしています。Xiongらは、RNAセクシークレーション解析に基づき、肝臓の非実質細胞(NPC)が細胞外マトリックスの形成や細胞接着などのプロセスに関与し、NASH16の進行に寄与していることを発見しました。Liらは肝細胞内のウィルムズ腫瘍1結合タンパク質(WTAP)が異所性脂質の蓄積と炎症を調節し、NASH形成を促進することを示しました17。バルクRNA-seq解析はNASHのメカニズムを解明する強力なツールですが、その結果は上流データの質に非常に敏感です。上流の実験操作や解析プロセスの異質性はデータの信頼性を著しく損なう可能性があり、その結果、真の生物学的情報を隠し、その後の解析の精度を妨げます。したがって、標準化された上流分析手順のセットを確立することが重要です。
単一細胞RNAシーケンシング(scRNA-seq)と比較して、バルクRNA-seqは実験設計と実用的応用の両面でいくつかの明確な利点を提供します。scRNA-seqは単一細胞レベルでの細胞異質性の同定や細胞型特異的な転写特徴の精密解析を可能にしますが、高コスト、複雑なデータ処理要件、低存量転写産物検出の感度の制限と関連しています18。対照的に、バルクRNA-seqはより深いシーケンス深度、低コスト、高いサンプルスループットを提供し、集団レベルの差異遺伝子発現解析や分子メカニズムの探求に特に適しています。したがって、標準化された分析ワークフローに導かれれば、バルクRNA-seqは複雑な疾患の分子基盤を調査する効率的でコスト効率的かつ堅牢なアプローチであり続けます。
このプロトコルは、高いRNA完全性(RIN ≥ 7.0)かつ十分な入力RNA(サンプルあたり≥500 ng)を持つヒト組織から得られたバルクRNA-seqデータセット向けに特別に設計されています。アライメントおよび数値化ステップの信頼性を確保するためには、少なくとも10コアCPU、32GBのRAM、最低200GBの空きディスク容量を備えたローカルワークステーションが推奨されます。これらの要件を基に、プロトコルは詳細な運用指示や標準化されたパラメータ設定を含む効率的かつ使いやすい分析ワークフローを提供し、大規模なトランスクリプトミックデータを分析する研究者のニーズに応えます。
Access restricted. Please log in or start a trial to view this content.
デモンストレーション目的で、Lan Baiらが生成した公開データセットPRJNA1023502を用いて、上流および下流解析の各ステップを示すために用いられました。このデータセットはオープンアクセスのNCBI SRAデータベースから提供されるため、追加の権限や倫理的承認は必要ありません。必要なソフトウェアおよびRパッケージのバージョンをすべて確認するには 、材料表 を参照してください。公開されているデータセットPRJNA1023502、6つの非NASH、6つのNAFL、6つのNASH肝RNA-seqサンプルで構成されています。このプロトコルでは、SRAデータベースからのデータ取得、品質管理(fastp)、アラインメント(HISAT2)、定量化(featureCounts)、下流の差分発現および機能豊か解析を含むバルクRNA-seqワークフローのすべてのステップを実証しました。
1. SRAツールキットのインストール
2. 公開データのダウンロード
3. 遺伝子カウントマトリックスの生成
REFERENCE=~/reference/human/GRCh38/GRCh38.primary_assembly.genome.fa
GTF=~/reference/human/GRCh38/gencode.v44.annotation.gtf
INDEX=~/reference/human/GRCh38/GRCh38_index
FASTQ_DIR=~/SRA_tutorial/fastq
OUT_FASTP=~/RNAseq/fastp
OUT_HISAT2=~/RNAseq/hisat2
OUT_COUNTS=~/RNAseq/counts
mkdir -p $FASTQ_DIR $OUT_FASTP $OUT_HISAT2 $OUT_COUNTS
for f in SRR*; do [[ ! $f =~ \.sra$ ]] && mv "$f" "$f.sra"; done
for f in SRR*; do [[ ! $f =~ \.sra$ ]] && mv "$f" "$f.sra"; donefor f in SRR*; do [[ ! $f =~ \.sra$ ]] && mv "$f" "$f.sra"; donefor f in *.sra; do fasterq-dump "$f" --split-files -O $FASTQ_DIR - e 20; donehisat2-build $REFERENCE $INDEXfor fq in $FASTQ_DIR/*.fastq; do
sample=$(basename "$fq" .fastq)
for fq1 in $FASTQ_DIR/*_1.fastq; do
sample=$(basename "$fq1" _1.fastq)
fq2=$FASTQ_DIR/${sample}_2.fastqfastp \
-i "${fq}" \
-o $OUT_FASTP/${sample}.clean.fastq \
-h $OUT_FASTP/${sample}.html \
-j $OUT_FASTP/${sample}.json \
-w 20fastp \
-i "${fq}" \ -I "$fq2" \
-o $OUT_FASTP/${sample}_1.clean.fastq \
-O $OUT_FASTP/${sample}_2.clean.fastq \
-h $OUT_FASTP/${sample}.html \
-j $OUT_FASTP/${sample}.json \
-w 20hisat2 -p 20 \ -x $INDEX \-U $OUT_FASTP/${sample}.clean.fastq \
-S $OUT_HISAT2/${sample}.samhisat2 -p 20 \-x $INDEX \-1 $OUT_FASTP/${sample}_1.clean.fastq \
-2 $OUT_FASTP/${sample}_2.clean.fastq \
-S $OUT_HISAT2/${sample}.samsamtools view -@ 20 -bS $OUT_HISAT2/${sample}.sam \
| samtools sort -@ 20 -o $OUT_HISAT2/${sample}.sorted.bam
samtools index $OUT_HISAT2/${sample}.sorted.bam
donefeatureCounts -T 20 -p -s 0 \
-a $GTF \
-o $OUT_COUNTS /${sample}.counts.txt \
$OUT_HISAT2/${sample}.sorted.bam
Donecut -f1 $(ls $OUT_COUNTS/*.counts.txt | head -1) > all_counts.txtfor f in $OUT_COUNTS/*.counts.txt; do
cut -f7 "$f" | paste all_counts.txt - > tmp && mv tmp
all_counts.txt
donesamples=$(ls *.counts.txt | sed 's/.counts.txt//' | paste -sd "\t")
echo -e "Geneid\t$samples" | cat - all_counts.txt > counts_matrix.txtawk '$3=="exon"{match($0,/gene_id "([^"]+)"/,a); if(a[1]!=""){len=$5-$4+1; gene_len[a[1]]+=len}} END{print "GENE_ID\tLENGTH"; for(g in gene_len) print g"\t"gene_len[g]}' \$GTF > gene_length.txt4. 生計数マトリックス処理と遺伝子注釈
mart <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
id_map <- getBM(attributes = c("ensembl_gene_id", "hgnc_symbol"),
filters = "ensembl_gene_id",
values = exprSet$GeneID,
mart = mart)
exprSet <- exprSet %>%
left_join(id_map, by = c("GeneID" = "ensembl_gene_id")) %>%
filter(!is.na(hgnc_symbol), hgnc_symbol != "") %>%
distinct(hgnc_symbol, .keep_all = TRUE) %>%
column_to_rownames("hgnc_symbol")5. 遺伝子発現定量化
注:詳細なスクリプトについては 補足ファイル1 を参照してください。
counts <- read.csv("output/clean_counts_SRA.csv", header=TRUE, row.names=1)
gene_len <- read.delim("data/gene_length.txt", header=FALSE, col.names=c("gene_symbol","length"))
gene_len <- gene_len %>% distinct(gene_symbol, .keep_all=TRUE)
rownames(gene_len) <- gene_len$gene_symbol
gene_len <- gene_len[match(rownames(counts), gene_len$gene_symbol),]
length_bp <- gene_len$length
fpkm <- (counts / length_bp) * 1e9 / colSums(counts)
write.csv(fpkm, "output/clean_fpkm_SRA.csv")
tpm <- (counts / length_bp) / colSums(counts / length_bp) * 1e6
write.csv(tpm, "output/clean_tpm_SRA.csv")6. サンプルクラスタリングと差分可視化
gene.pca <- PCA(exprSet, ncp = 2, scale.unit = TRUE, graph = FALSE)
ggplot(pca_sample, aes(x = Dim.1, y = Dim.2)) +
geom_point(aes(color = group)) +
labs(x = paste('PC1:', pca_eig1, '%'),
y = paste('PC2:', pca_eig2, '%'))7. 微分表現解析および結果の可視化
注:詳細なスクリプトについては 補足ファイル1 を参照してください。
dds <- DESeq(DESeqDataSetFromMatrix(countData = exprSet, colData = colData, design = ~group)); sizeFactors(dds); res <- results(dds); dds <- dds[rowSums(counts(dds)) > 1,]
dd1 <- results(dds, contrast = contrast, alpha = 0.05)
dd2 <- lfcShrink(dds, contrast = contrast, res = dd1, type = "ashr")ggplot(data = data, aes(x = log2FoldChange, y = -log10(padj))) +
geom_point(aes(color = group), alpha = 1, size = 1.2) +
geom_hline(yintercept = -log10(0.05), lty = 4) +
geom_vline(xintercept = c(-0.5, 0.5), lty = 4) +
geom_text_repel(data = subset(data, abs(log2FoldChange) >= 1.5 & padj < 0.05),
aes(label = gene_id))8. 機能的濃縮分析および可視化を行う
注:詳細なスクリプトについては 補足ファイル1 を参照してください。
EGG <- enrichKEGG(gene = gene$ENTREZID, organism = 'hsa',
pvalueCutoff = 0.05, qvalueCutoff = 0.05)
ggplot(symboldata, aes(richFactor, Description)) +
geom_point(aes(color = p.adjust, size = Count))ego <- enrichGO(gene = gene$ENTREZID, OrgDb = "org.Hs.eg.db", ont = "ALL",
pvalueCutoff = 0.05, qvalueCutoff = 0.05, pAdjustMethod = "BH")
ggplot(df) +
ggforce::geom_link(aes(x = 0, y = Description, xend = -log10(p.adjust),
yend = Description, color = ONTOLOGY), n = 500, show.legend = FALSE) +
facet_wrap(~ONTOLOGY, scales = "free", ncol = 1)genelist <- sort(res$log2FoldChange, decreasing = TRUE)
names(genelist) <- rownames(res)
hallmarks <- read.gmt('resource/h.all.v2023.2.Hs.symbols.gmt')
y <- GSEA(genelist, TERM2GENE = hallmarks, pvalueCutoff = 0.05)
gsearesult <- yd %>% arrange(desc(NES)) %>% slice_head(n = 10)
ggplot(gsearesult, aes(x = logFC, y = Description, fill = -log10(pvalue))) +
geom_density_ridges(alpha = 0.8, scale = 0.8) +
geom_point(aes(size = abs(NES), x = -0.4, color = NES)) +
scale_fill_distiller(palette = 'Spectral') +
scale_color_distiller(palette = 'Reds') +
scale_size_continuous(range = c(2, 6))Access restricted. Please log in or start a trial to view this content.
バルクRNA-seqの上流解析ワークフローは 図1Aに示されています。このワークフローはLinuxプラットフォーム上で以下の重要なステップを順次実行します。まず、fastpを使って生のシーケンスデータの厳格な品質管理を行い、低品質のリードやアダプターシーケンスを除去します。その後、HISAT2は高品質なリードをリファレンスゲノムにアラインメントし、Samtoolsがアラインメントファイルを変換・ソートします。最後に、FeatureCountsは遺伝子レベルの定量化を行い、遺伝子発現マトリックスを生成するため、後続解析のための高品質な入力を提供します。その後の処理と統計解析はR環境内で行われ、関連するワークフローと必要なソフトウェアパッケージは 図1Bに示されています。分析のために発表された研究から選ばれ、非NASH6件、NAFL6件、NASHサンプル6 件(図1C)から構成されています(図1C)。非NASH対照サ...
Access restricted. Please log in or start a trial to view this content.
バルクRNA-seqデータ解析は、ゲノミクス、バイオインフォマティクス、統計学、コンピュータサイエンスを統合した学際的な課題として特徴づけられます。完全な分析ワークフローは、生データの前処理、品質管理、配列アラインメント、遺伝子レベルの定量化、データ正規化、差異発現解析、生物学的解釈など、複数の上流および下流のステップを含みます。これらのステップの中で、生のシーケンシングリードを高品質な遺伝子発現マトリックスに正確に変換することは特に重要であり、上流処理中に導入された誤りが下流の生物学的結論に影響しやすいためです。したがって、トランスクリプトミック研究の再現性向上には、透明かつ標準化された上流解析ワークフローの確立が不可欠です。
このプロトコルは、fastp(読み取りトリミングや品質管理用)、HISAT2(スプライス認識アラインメント用)、featureCounts(遺伝子レベルの定量化用)など広く使われているツールを統合した、効率的で完全なスクリプトベースのワークフローを提供します。これらのツールは、Tuxedo...
Access restricted. Please log in or start a trial to view this content.
著者たちは利益相反がないと宣言しています。
著者らは、本研究で使用された公開データベースの管理者の皆様に感謝の意を表します。
Access restricted. Please log in or start a trial to view this content.
| Name | Company | Catalog Number | Comments |
|---|---|---|---|
| バイオマルト | バイオコンダクター | 2.64.0 | Ensemblによる遺伝子注釈 |
| clusterProfiler | バイオコンダクター | 4.16.0 | 機能豊化解析 |
| DESeq2 | バイオコンダクター | 1.48.1 | 微分表現解析 |
| ファクトマインR | アグロパリテック | 2.11.0 | PCAおよび多変量解析 |
| ファストプ | オープンジーン | 1.0.1 | FASTQデータの品質管理とフィルタリング |
| フィーチャカウント | ウォルター&エリザ・ホール医療研究所バイオインフォマティクス部門 | 2.0.0 | 遺伝子発現定量のために各遺伝子にマッピングされたリード数を数えます |
| ggplot2 | ポジット | 3.5.2 | データ可視化 |
| グレッペル | カミル・スワヴィコフスキ | 0.9.6 | 重複しないテキストラベル |
| グリッジズ | クラウス・O・ウィルケ | 0.5.6 | 尾根線の区画を作成 |
| HISAT2 | ジョンズ・ホプキンス大学 | 2.2.1 | フィルタリング済みの高品質リードを参照ゲノムにアラインメントします |
| R | Rコアチーム | 4.5.0 | データ計算、分析、可視化のための環境 |
| RColorBrewer | エーリッヒ・ノイヴィルト | 1.1.3 | プロット用のカラーパレット |
| サムツールズ | 大規模ゲノミクスの作業分野 | 1.22.0 | 効率的な取得とアクセスのためにSAMファイルの変換と処理 |
| SRAツールキット | 国立バイオテクノロジー情報センター | 3.2.1 | NCBI SRAデータベースから生のシーケンスデータを取得・前処理 |
Access restricted. Please log in or start a trial to view this content.
Request permission to reuse the text or figures of this JoVE article
Request Permission