Das vorliegende Protokoll etabliert eine vollständige Pipeline zur Analyse des Bulk-RNA-Seq-Prozesses von Rohdaten bis zur funktionellen Anreicherungsanalyse.
Method Article
* These authors contributed equally
Das vorliegende Protokoll etabliert eine vollständige Pipeline zur Analyse des Bulk-RNA-Seq-Prozesses von Rohdaten bis zur funktionellen Anreicherungsanalyse.
Nichtalkoholische Fettleber (NAFL) gilt üblicherweise als gutartige Erkrankung; sobald es jedoch zu nicht-alkoholischer Steatohepatitis (NASH) überschreitet, besteht ein deutlich erhöhtes Risiko, eine Endstadium-Lebererkrankung zu entwickeln. Viele Studien versuchen, den molekularen Mechanismus hinter dem Übergang von NAFL zu NASH zu klären. Hochdurchsatz-Sequenzierungstechnologien (wie Bulk RNA-seq) haben Forschern ein tieferes Verständnis verschafft, indem sie das Transkriptom untersucht und die Expression von Molekülen, die Aktivierung von Signalwegen und andere Faktoren im Zusammenhang mit dem Krankheitsverlauf aufzeigten. Es gibt eine Fülle von Open-Source-Daten, die Forscher analysieren können, um potenzielle Ziele für die Behandlung von Krankheiten zu identifizieren. Die verwandte Forschung ist jedoch durch das Fehlen eines effizienten und zuverlässigen Verfahrens zur Upstream-Analyse des Transkriptoms eingeschränkt. Hier wird eine hochgradig reproduzierbare und benutzerfreundliche Upstream-Analyse sowie eine daraus resultierende Differentialgenanalyse-Pipeline bereitgestellt, um eine standardisierte Verarbeitung und tiefgehende Parsing privater oder öffentlicher Daten zu erreichen. Die Pipeline ist in vier Schritte unterteilt: (1) Qualitätskontrolle der Daten; (2) Genkartierung; (3) Differentialgenanalyse; und (4) Funktionalanalysis. Dieser Prozess zielt darauf ab, die molekularen Mechanismen der Krankheitstransformation aufzudecken und Forschern durch die Analyse von Bulk RNA-seq-Daten potenzielle Arzneimittelziele und therapeutische Ansätze zu unterstützen.
Die nicht-alkoholische Fettlebererkrankung (NAFLD) ist weltweit die am häufigsten verbreitete chronische Lebererkrankung und betrifft mehr als ein Viertel der Bevölkerung. Seine Häufigkeit ist in den letzten Jahrzehnten dramatisch gestiegen, 1,2,3. Die wachsende Krankheitsbelastung, insbesondere ihre fortgeschrittenere Form, die nichtalkoholische Steatohepatitis (NASH), stellt eine große globale Gesundheitsherausforderung und eine schwere wirtschaftliche Belastungdar. Die erste Stufe von NAFLD ist die nicht-alkoholische Fettleber (NAFL), die von Entzündungen und Fibrose begleitet wird, die sich zu NASH entwickeln können. Letzteres erhöht das Risiko eines Fortschreitens zu Endstadium-Lebererkrankungen, einschließlich Zirrhose und hepatozellulärem Karzinom (HCC)5,6,7. HCC-Inzidenz und -Mortalität sind mit einem Anstieg von NASH 8,9 verbunden, und es wird erwartet, dass NAFLD/NASH bis 2030 die führende Indikation für Lebertransplantationen seinwird. Der klinische Verlauf von NAFLD ist jedoch hoch heterogen11, was die Entwicklung relevanterMedikamente 12 stark behindert und es besonders wichtig macht, die beteiligten molekularen Mechanismen präzise zu untersuchen.
Die massenhafte RNA-Seq-basierte Erfassung zellulärer Zusammensetzungsinformationen kann die Pathogenese verschiedener Krankheiten erheblich aufklären. In den letzten Jahrzehnten wurden zahlreiche Massen-RNA-seq-Studien an Modellorganismen und Menschen durchgeführt, um Genexpressionsunterschiede im NASH-Fortschreiten 13,14,15 aufzuklären und neue therapeutische Ziele für die Intervention zu identifizieren. Basierend auf einer Bulk-RNA-Seq-Analyse fanden Xiong et al. heraus, dass nichtparenchymale Zellen (NPCs) in der Leber an Prozessen wie der Bildung extrazellulärer Matrixen und Zelladhäsion beteiligt sind, die zum Fortschreiten von NASH16 beitragen. Li et al. zeigten, dass das hepatische Wilms-Tumor-1-assoziierende Protein (WTAP) in Hepatozyten die Eileiterfettakkumulation und Entzündung reguliert und so die NASH-Bildung17 fördert. Obwohl die Bulk-RNA-Seq-Analyse ein mächtiges Werkzeug zur Aufklärung der Mechanismen von NASH ist, sind ihre Ergebnisse sehr empfindlich gegenüber der Qualität der Upstream-Daten. Die Heterogenität von vorgelagerten experimentellen Operationen und Analyseprozessen kann die Zuverlässigkeit der Daten ernsthaft beeinträchtigen, wodurch echte biologische Informationen verschleiern und die Genauigkeit nachfolgender Analysen beeinträchtigt werden. Daher ist es wichtig, eine Reihe standardisierter Upstream-Analyseverfahren einzurichten.
Im Vergleich zur Single-Cell-RNA-Sequenzierung (scRNA-seq) bietet Bulk RNA-Seq mehrere deutliche Vorteile sowohl im experimentellen Design als auch in der praktischen Anwendungen. Während scRNA-seq die Identifizierung zellulärer Heterogenität auf Einzelzellebene ermöglicht und eine präzise Analyse zelltypspezifischer transkriptionaler Merkmale ermöglicht, ist es mit hohen Kosten, komplexen Datenverarbeitungsanforderungen und begrenzter Sensitivität bei der Erkennung von Transkripten mit geringer Häufigkeit verbunden18. Im Gegensatz dazu bietet Bulk RNA-Seq eine höhere Sequenzierungstiefe, geringere Kosten und einen größeren Probendurchsatz, was es besonders geeignet für populationsebene differenzielle Genexpressionsanalysen und die Erforschung molekularer Mechanismenmacht 19. Daher bleibt Bulk RNA-Seq, wenn es von standardisierten analytischen Arbeitsabläufen geleitet wird, ein effizienter, kosteneffizienter und robuster Ansatz zur Untersuchung der molekularen Grundlage komplexer Krankheiten.
Dieses Protokoll ist speziell für Bulk-RNA-Seq-Datensätze entwickelt, die aus menschlichen Geweben mit hoher RNA-Integrität (RIN ≥ 7,0) und ausreichender RNA-Eingabe (≥ 500 ng pro Probe) stammen. Um eine zuverlässige Ausführung von Ausrichtungs- und Quantifizierungsschritten sicherzustellen, wird eine lokale Arbeitsstation empfohlen, die mit mindestens einer 10-Kern-CPU, 32 GB RAM und mindestens 200 GB freiem Festplattenspeicher ausgestattet ist. Aufbauend auf diesen Anforderungen bietet das Protokoll einen effizienten und benutzerfreundlichen analytischen Workflow, einschließlich detaillierter Betriebsanweisungen und standardisierter Parameterkonfigurationen, um den Bedürfnissen von Forschern zu erfüllen, die groß angelegte transkriptomische Daten analysieren.
Access restricted. Please log in or start a trial to view this content.
Zu Demonstrationszwecken wurde der öffentlich verfügbare Datensatz PRJNA1023502 von Lan Bai et al. erstellt, um jeden Schritt sowohl der Upstream- als auch Downstream-Analysen20 zu illustrieren. Da dieser Datensatz aus der Open-Access-Datenbank der NCBI SRA stammt, sind keine zusätzlichen Genehmigungen oder ethischen Genehmigungen erforderlich. Siehe die Materialtabelle, um alle erforderlichen Software- und R-Package-Versionen zu überprüfen. Der öffentlich verfügbare Datensatz umfasst PRJNA1023502 6 Nicht-NASH-, 6 NAFL- und 6 NASH-Leber-RNA-seq-Proben. In diesem Protokoll wurde der Datensatz verwendet, um alle Schritte des Bulk-RNA-Seq-Workflows zu demonstrieren, einschließlich Datenabruf aus der SRA-Datenbank, Qualitätskontrolle (fastp), Ausrichtung (HISAT2), Quantifizierung (featureCounts) sowie nachgelagerter Analysen von differenzieller Expression und funktionaler Anreicherung.
1. Installation des SRA-Toolkits
2. Öffentlicher Datendownload
3. Erzeugung einer Gen-Zählmatrix
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. Verarbeitung der Rohzählmatrix und Genannotation
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. Genexpressionsquantifizierung
HINWEIS: Siehe die ergänzende Akte 1 für das detaillierte Skript.
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. Beispielclustering und Differenzvisualisierung
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. Analyse differenzialer Expression und Visualisierung der Ergebnisse
HINWEIS: Siehe die ergänzende Akte 1 für das detaillierte Skript.
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. Durchführung von funktionellen Anreicherungsanalysen und Visualisierungen
HINWEIS: Siehe die ergänzende Akte 1 für das detaillierte Skript.
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.
Der Upstream-Analyse-Workflow für Bulk RNA-Seq ist in Abbildung 1A dargestellt. Dieser Workflow führt sequentiell folgende Schlüsselschritte auf einer Linux-Plattform aus: Erstens wird eine strenge Qualitätskontrolle der Rohsequenzierungsdaten mittels FASTP durchgeführt, um minderwertige Lese- und Adaptersequenzen zu entfernen; anschließend richtet HISAT2 hochwertige Lesungen auf das Referenzgenom aus, wobei Samtools die Ausrichtungsdateien konvertiert und sortiert; schließlich führt Feature...
Access restricted. Please log in or start a trial to view this content.
Die Massenanalyse von RNA-seq-Daten wird als interdisziplinäre Aufgabe charakterisiert, die Genomik, Bioinformatik, Statistik und Informatik integriert. Ein vollständiger analytischer Workflow umfasst mehrere Upstream- und Downstream-Schritte, darunter Rohdatenvorverarbeitung, Qualitätskontrolle, Sequenzausrichtung, Gen-Quantifizierung, Datennormalisierung, Analyse differenzieller Expression und biologische Interpretation. Unter diesen Schritten ist die genaue Umwandlung der Rohsequenzie...
Access restricted. Please log in or start a trial to view this content.
Die Autoren erklären, dass sie keine Interessenkonflikte haben.
Die Autoren möchten den Betreuern der öffentlich verfügbaren Datenbanken danken, die in dieser Studie verwendet wurden.
Access restricted. Please log in or start a trial to view this content.
| Name | Company | Catalog Number | Comments |
|---|---|---|---|
| biomaRt | Bioleiter | 2.64.0 | Genannotation aus Ensembl |
| clusterProfiler | Bioleiter | 4.16.0 | Funktionale Anreicherungsanalyse |
| DESeq2 | Bioleiter | 1.48.1 | Differentialexpressionsanalyse |
| FactoMineR | AgroParisTech | 2.11.0 | PCA und multivariate Analyse |
| Fastp | OpenGene | 1.0.1 | Qualitätskontrolle und Filterung von FASTQ-Daten |
| FeatureCounts | Bioinformatik-Abteilung, Walter and Eliza Hall Institute of Medical Research | 2.0.0 | Zähle die Anzahl der Reads, die jedem Gen zur Genexpressionsquantifizierung zugeordnet wurden. |
| ggplot2 | Posit | 3.5.2 | Datenvisualisierung |
| ggrepel | Kamil Slowikowski | 0.9.6 | Nicht überlappende Textbeschriftungen |
| ggridges | Claus O. Wilke | 0.5.6 | Erstelle Gratlinien-Diagramme |
| HISAT2 | Johns Hopkins Universität | 2.2.1 | Richten Sie die gefilterten, hochwertigen Lesungen auf das Referenzgenom aus |
| R | R Core Team | 4.5.0 | Eine Umgebung für Datenberechnung, -analyse und -visualisierung |
| RColorBrewer | Erich Neuwirth | 1.1.3 | Farbpaletten zum Plotten |
| Samtools | Arbeitsbereich der großflächigen Genomik | 1.22.0 | Konvertieren und verarbeiten Sie SAM-Dateien für effiziente Abrufe und Zugriff |
| SRA-Toolkit | Nationales Zentrum für Biotechnologie-Information | 3.2.1 | Rohsequenzierungsdaten aus der NCBI SRA-Datenbank abrufen und vorverarbeiten |
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