Niniejszy protokół ustanawia kompletny pipeline do analizy procesu masowego RNA-seq od surowych danych do analizy wzbogacenia funkcjonalnego.
Method Article
* These authors contributed equally
Niniejszy protokół ustanawia kompletny pipeline do analizy procesu masowego RNA-seq od surowych danych do analizy wzbogacenia funkcjonalnego.
Bezalkoholowa stłuszczona wątroba (NAFL) jest zwykle uważana za łagodne schorzenie; jednak gdy choroba przechodzi w niealkoholowe steato-wątroby (NASH), pacjenci są znacznie bardziej narażeni na rozwój końcowej choroby wątroby. Wiele badań próbuje wyjaśnić molekularny mechanizm leżący u podstaw przejścia z NAFL do NASH. Technologie sekwencjonowania o wysokiej przepustowości (takie jak RNA-seq w masie) pozwoliły badaczom uzyskać głębsze zrozumienie poprzez badanie transkryptomu, ujawnianie ekspresji cząsteczek, aktywacji szlaków sygnalizacyjnych oraz innych czynników związanych z postępem choroby. Dostępnych jest mnóstwo otwartych źródeł danych, które badacze mogą analizować w celu identyfikacji potencjalnych celów leczenia chorób. Jednak powiązane badania są ograniczone przez brak efektywnego i wiarygodnego procesu analizy transkryptomu w górnym zakresie. Tutaj dostępna jest wysoce powtarzalna i przyjazna dla użytkownika analiza upstream oraz powiązany potok analizy różnicowej genów, umożliwiający ustandaryzowane przetwarzanie i głęboką analizę danych prywatnych lub publicznych. Potok podzielony jest na cztery etapy: (1) kontrola jakości danych; (2) mapowanie genów; (3) różnicowa analiza genów; oraz (4) analizę funkcjonalną. Proces ten ma na celu odkrycie molekularnych mechanizmów transformacji choroby oraz wsparcie naukowców w przesiewaniu potencjalnych celów leków i podejść terapeutycznych poprzez analizę danych RNA-seq w całości.
Niealkoholowa stłuszczeniowa choroba wątroby (NAFLD) jest najpowszechniejszą chorobą przewlekłej wątroby na świecie, dotykającą ponad jedną czwartą populacji. Jego częstość gwałtownie wzrosła w ostatnich dekadach 1,2,3. Rosnące obciążenie chorobą, zwłaszcza jej bardziej zaawansowaną formą, niealkoholowym steato-zapaleniem wątroby (NASH), stanowi poważne globalne wyzwanie zdrowotne i duże obciążenie ekonomiczne4. Pierwszym stadium NAFLD jest niealkoholowa stłuszczona wątroba (NAFL), któremu towarzyszą stany zapalne i włóknienie, które mogą przechodzić do NASH. Ten ostatni znacząco zwiększa ryzyko postępu do końcowego stadium choroby wątroby, w tym marskości wątroby i raka wątrobowokomórkowego (HCC)5,6,7. Częstość zachorowalności i śmiertelność HCC wiąże się ze wzrostem NASH 8,9, a oczekuje się, że NAFLD/NASH stanie się głównym wskazaniem do przeszczepu wątroby do 2030roku 10. Jednak postęp kliniczny NAFLD jest wysoce heterogeniczny, co poważnie utrudnia rozwój odpowiednich leków12, dlatego szczególnie ważne jest precyzyjne zbadanie mechanizmów molekularnych zaangażowanych w proces.
Zbiorowe pozyskiwanie informacji o składzie komórkowym oparte na RNA-sequ może znacząco wyjaśnić patogenezę różnych chorób. W ostatnich dekadach przeprowadzono liczne badania RNA-seq na organizmach modelowych i ludziach, aby wyjaśnić różnice w ekspresji genów w progresji NASH 13,14,15 oraz zidentyfikować nowe cele terapeutyczne do interwencji. Na podstawie analizy RNA-seq w całości, Xiong i in. stwierdzili, że komórki nieprzymięszowe (NPC) w wątrobie biorą udział w procesach takich jak tworzenie macierzy zewnątrzkomórkowej i adhezja komórek, które przyczyniają się do progresji NASH16. Li i in. wykazali, że białko skojarzające z guzem Wilmsa wątroby (WTAP) w hepatocytach reguluje nagromadzenie i stan zapalny pozamacizowanych lipidów, co sprzyja powstawaniu NASH17. Chociaż analiza RNA-seq w masie jest potężnym narzędziem do wyjaśniania mechanizmów NASH, jej wyniki są bardzo wrażliwe na jakość danych upstream. Heterogeniczność operacji eksperymentalnych i procesów analitycznych w górnym toku może poważnie osłabić wiarygodność danych, maskując prawdziwe informacje biologiczne i zakłócając dokładność kolejnych analiz. Dlatego ważne jest ustanowienie zestawu ustandaryzowanych procedur analizy w górnym zakresie.
W porównaniu z sekwencjonowaniem pojedynczokomórkowego RNA (scRNA-seq), RNA-seq objętościowy oferuje kilka wyraźnych zalet zarówno w projektowaniu eksperymentalnym, jak i praktycznym zastosowaniu. Chociaż scRNA-seq umożliwia identyfikację heterogeniczności komórkowej na poziomie pojedynczych komórek oraz precyzyjną analizę cech transkrypcji specyficznych dla typu komórek, wiąże się to z wysokimi kosztami, złożonymi wymaganiami dotyczącymi przetwarzania danych oraz ograniczoną czułością do wykrywania transkryptów o niskiej ilości.18. Dla porównania, RNA-seq objętości zapewnia większą głębokość sekwencjonowania, niższe koszty i większą przepustowość próbek, co czyni go szczególnie odpowiednim do analiz różnicowej ekspresji genów na poziomie populacji oraz do eksploracji mechanizmów molekularnych19. Dlatego w oparciu o ustandaryzowane procesy analityczne, RNA-seq objęte pozostaje efektywnym, opłacalnym i solidnym podejściem do badania molekularnych podstaw chorób złożonych.
Protokół ten został zaprojektowany specjalnie dla zbiorów danych RNA-seq pochodzących z tkanek ludzkich o wysokiej integralności RNA (RIN ≥ 7,0) i wystarczającej ilości RNA wejściowego (≥ 500 ng na próbkę). Aby zapewnić niezawodne wykonywanie kroków wyrównania i ilościfikacji, zaleca się lokalną stację roboczą wyposażoną w co najmniej 10-rdzeniowy procesor, 32 GB RAM oraz minimum 200 GB wolnej przestrzeni na dysku. Bazując na tych wymaganiach, protokół zapewnia efektywny i przyjazny dla użytkownika proces analityczny pracy, w tym szczegółowe instrukcje operacyjne oraz ustandaryzowane konfiguracje parametrów, aby sprostać potrzebom badaczy analizujących duże dane transkryptomiczne.
Access restricted. Please log in or start a trial to view this content.
Do celów demonstracyjnych publicznie dostępny zbiór danych PRJNA1023502 opracowany przez Lan Bai i in. został wykorzystany do zilustrowania każdego etapu zarówno analiz w górnym, jak i dalszym ciągu20. Ponieważ ten zbiór danych pochodzi z otwartej bazy danych NCBI, nie są wymagane dodatkowe uprawnienia ani etyczne zgody. Zobacz Tabelę Materiałów , aby zweryfikować wszystkie wymagane wersje oprogramowania i pakietów R. Publicznie dostępny zbiór danych PRJNA1023502 zawiera 6 próbek nie-NASH, 6 NAFL oraz 6 NASH RNA-seq wątroby. W tym protokole zbiór danych został wykorzystany do demonstracji wszystkich etapów masowego workflow RNA-seq, w tym pobierania danych z bazy danych, kontroli jakości (fastp), wyrównania (HISAT2), ilościfikacji (featureCounts) oraz analiz różnicowych ekspresji i wzbogacania funkcjonalnych w dalszej fazie.
1. Instalacja zestawu narzędzi
2. Pobieranie danych publicznych
3. Generowanie macierzy liczenia genów
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. Przetwarzanie macierzy surowej liczby i adnotacja genów
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. Kwantyfikacja ekspresji genów
UWAGA: Szczegółowy scenariusz można znaleźć w Pliku Uzupełniającym 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. Grupowanie próbek i wizualizacja różnic
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. Analiza różniczkowych wyrażeń i wizualizacja wyników
UWAGA: Szczegółowy scenariusz można znaleźć w Pliku Uzupełniającym 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. Przeprowadzanie analizy i wizualizacji wzbogacania funkcjonalnego
UWAGA: Szczegółowy scenariusz można znaleźć w Pliku Uzupełniającym 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.
Przepływ analizy upstream dla masowego RNA-seq został zilustrowany na Rysunku 1A. Ten workflow wykonuje kolejno następujące kluczowe kroki na platformie Linux: po pierwsze, rygorystyczna kontrola jakości surowych danych sekwencjonowania jest wykonywana za pomocą fastp, aby usunąć niskiej jakości odczyty i sekwencje adapterów; następnie HISAT2 dopasowuje wysokiej jakości odczyty do genomu referencyjnego, a Samtools konwertuje i sortuje pliki wyrównania; wreszcie FeatureCounts przeprowadza kwa...
Access restricted. Please log in or start a trial to view this content.
Analiza danych RNA-seq w całości charakteryzuje się interdyscyplinarnym zadaniem integrującym genomikę, bioinformatykę, statystykę i informatykę. Pełny przepływ pracy analityczny obejmuje wiele etapów w górę i w dolnym kierunku, w tym wstępne przetwarzanie surowych danych, kontrolę jakości, wyrównywanie sekwencji, kwantyfikację na poziomie genów, normalizację danych, analizę różnicowej ekspresji oraz interpretację biologiczną. Wśród tych etapów szczególnie istotne jest dokładne przekształcenie surowych odczytów sekwencjo...
Access restricted. Please log in or start a trial to view this content.
Autorzy deklarują, że nie mają żadnych konfliktów interesów.
Autorzy chcieliby podziękować opiekunom publicznie dostępnych baz danych wykorzystanych w tym badaniu.
Access restricted. Please log in or start a trial to view this content.
| Name | Company | Catalog Number | Comments |
|---|---|---|---|
| biomaRt | Bioconductor | 2.64.0 | Adnotacja genów z Ensembl |
| clusterProfiler | Bioconductor | 4.16.0 | Analiza wzbogacania funkcjonalnego |
| DESeq2 | Bioconductor | 1.48.1 | Analiza różniczkowa ekspresji |
| FactoMineR | AgroParisTech | 2.11.0 | Analiza PCA i wielowymiarowa |
| fastp | OpenGene | 1.0.1 | Kontrola jakości i filtrowanie danych FASTQ |
| Liczba cech | Dział Bioinformatyki, Instytut Badań Medycznych im. Waltera i Elizy Hallów | 2.0.0 | Policz liczbę odczytów przypisanych do każdego genu w celu ilościowania ekspresji genów |
| ggplot2 | Pozycja | 3.5.2 | Wizualizacja danych |
| Ggrepel | Kamil Slowikowski | 0.9.6 | Etykiety tekstowe nienakładające się |
| Ggridges | Claus O. Wilke | 0.5.6 | Tworz działki grzbietowe |
| HISAT2 | Uniwersytet Johnsa Hopkinsa | 2.2.1 | Dopasuj filtrowane wysokiej jakości odczyty do genomu referencyjnego |
| R | R Core Team | 4.5.0 | Środowisko do obliczania, analizy i wizualizacji danych |
| RColorBrewer | Erich Neuwirth | 1.1.3 | Palety kolorów do wyznaczania wykresów |
| samtools | Strumień pracy w genomice na dużą skalę | 1.22.0 | Konwertowanie i przetwarzanie plików SAM dla efektywnego odzyskiwania i dostępu |
| Zestaw narzędzi | Narodowe Centrum Informacji Biotechnologicznej | 3.2.1 | Pobierz i wstępnie przetwarzaj surowe dane sekwencjonowania z bazy danych NCBI |
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