본 프로토콜은 원시 데이터에서 기능 풍부 분석까지 대량 RNA-seq 과정을 분석하는 완전한 파이프라인을 구축합니다.
Method Article
* These authors contributed equally
본 프로토콜은 원시 데이터에서 기능 풍부 분석까지 대량 RNA-seq 과정을 분석하는 완전한 파이프라인을 구축합니다.
비알코올성 지방간(NAFL)은 일반적으로 양성 질환으로 간주됩니다; 그러나 비알코올성 지방간염(NASH)으로 진행되면 환자들은 말기 간 질환 발병 위험이 유저히 증가합니다. 많은 연구들이 NAFL에서 NASH로의 전환 기전을 밝히려는 시도를 하고 있습니다. 고처리량 시퀀싱 기술(예: 대량 RNA-seq)은 전사체를 분석하여 분자의 발현, 신호 전달 경로의 활성화 및 질병 진행과 관련된 기타 요인을 밝혀내어 연구자들에게 더 깊은 이해를 제공했습니다. 연구자들이 질병 치료의 잠재적 표적을 식별하기 위해 분석할 수 있는 풍부한 오픈 소스 데이터가 있습니다. 그러나 관련 연구는 전사체의 상류 분석을 위한 효율적이고 신뢰할 수 있는 프로세스의 부재로 인해 제한을 받고 있습니다. 여기서는 고도로 재현 가능하고 사용자 친화적인 상류 분석과 관련된 차별 유전자 분석 파이프라인을 제공하여 사적 또는 공공 데이터의 표준화된 처리와 심층 파싱을 달성합니다. 파이프라인은 네 단계로 나뉩니다: (1) 데이터의 품질 관리; (2) 유전자 지도 작성; (3) 차별 유전자 분석; 그리고 (4) 함수해석학. 이 과정은 질병 변형의 분자 메커니즘을 밝히고, Bulk RNA-seq 데이터를 분석하여 잠재적 약물 표적과 치료 접근법을 선별하는 데 연구자들을 지원하는 것을 목표로 합니다.
비알코올성 지방간 질환(NAFLD)은 전 세계적으로 가장 흔한 만성 간 질환으로, 인구의 4분의 1 이상에게 영향을 미칩니다. 최근 수십 년간 발생률이 급격히 증가했습니다1, 2, 3. 특히 더 진행된 형태인 비알코올성 지방간염(NASH)이 증가하는 질병 부담은 전 세계적으로 큰 보건 도전이자 무거운 경제적 부담을 안겨줍니다. NAFLD의 1단계는 비알코올성 지방간(NAFL)으로, 염증과 섬유화를 동반하여 NASH로 진행될 수 있습니다. 후자는 간경변증과 간세포암(HCC)을 포함한 말기 간 질환으로의 진행 위험을 크게 높입니다5,6,7. HCC 발생률과 사망률은NASH 8,9 증가와 연관되어 있으며, 2030년까지 NAFLD/NASH가 간 이식의 주요 적응증이 될 것으로 예상됩니다. 그러나 NAFLD의 임상 진행은 매우 이질적이며, 이는 관련 약물 개발을 심각하게 방해하므로(12) 관련 분자 기전을 정밀히 탐구하는 것이 특히 중요합니다.
세포 구성 정보를 대량 RNA-seq-기반으로 획득하면 다양한 질병의 발병 기전을 크게 밝혀낼 수 있습니다. 최근 수십 년간 모델 생물과 인간을 대상으로 NASH13, 14, 15 진행 내 유전자 발현 차이를 밝히고, 새로운 치료 표적을 규명하기 위한 수많은 집단 RNA-seq 연구가 수행되었습니다. 대량 RNA-seq 분석을 바탕으로 Xiong 등은 간 내 비실질세포(NPC)가 세포외기질 형성과 세포 부착과 같은 과정에 관여하며, 이는 NASH16의 진행에 기여한다는 사실을 발견했습니다. Li 등은 간세포 내 윌름스 종양 1-결합 단백질(WTAP)이 자궁외 지질 축적과 염증을 조절하여 NASH 형성을 촉진함을 입증했다17. 대량 RNA-seq 분석은 NASH의 메커니즘을 밝히는 강력한 도구이지만, 그 결과는 상위 데이터 품질에 매우 민감합니다. 상류 실험 작업과 분석 과정의 이질성은 데이터의 신뢰성을 심각하게 저하시켜 실제 생물학적 정보를 가리고 이후 분석의 정확성을 방해할 수 있습니다. 따라서 표준화된 상류 분석 절차를 수립하는 것이 중요합니다.
단세포 RNA 시퀀싱(scRNA-seq)과 비교할 때, 벌크 RNA-seq는 실험 설계와 실용적 응용 모두에서 여러 가지 뚜렷한 장점을 제공합니다. scRNA-seq는 단일 세포 수준에서 세포 이질성을 식별하고 세포 유형별 전사 특징의 정밀한 분석을 가능하게 하지만, 높은 비용, 복잡한 데이터 처리 요구, 그리고 저함도 전사체 검출에 대한 제한된 민감도를 동반합니다18. 반면, 대량 RNA-seq는 더 깊은 시퀀싱 깊이, 낮은 비용, 더 높은 샘플 처리량을 제공하여 집단 차원의 차별 유전자 발현 분석과 분자 기전 탐구에 특히 적합하다19. 따라서 표준화된 분석 워크플로우에 따라 대량 RNA-seq는 복잡한 질병의 분자 기초를 연구하는 데 효율적이고 비용 효율적이며 견고한 접근법으로 남아 있습니다.
이 프로토콜은 인간 조직에서 유래한 RNA 순결 데이터셋을 위해 특별히 설계되었습니다. RNA 무결도가 높음(RIN ≥ 7.0)과 충분한 입력 RNA(샘플당 ≥ 500 ng)를 가진 데이터셋입니다. 정렬 및 정량화 단계의 신뢰성 있는 실행을 위해 최소 10코어 CPU, 32GB RAM, 최소 200GB 이상의 여유 디스크 공간을 갖춘 로컬 워크스테이션이 권장됩니다. 이러한 요구사항을 바탕으로, 프로토콜은 대규모 전사체 데이터를 분석하는 연구자들의 요구를 충족시키기 위해 상세한 운영 지침과 표준화된 매개변수 구성을 포함한 효율적이고 사용자 친화적인 분석 워크플로우를 제공합니다.
Access restricted. Please log in or start a trial to view this content.
시연 목적으로, Lan Bai 등이 생성한 공개 데이터셋 PRJNA1023502 상류 및 하류 분석의 각 단계를 설명하는 데 사용되었습니다. 이 데이터셋은 오픈 액세스 NCBI SRA 데이터베이스에서 유래하므로 추가적인 권한이나 윤리적 승인이 필요하지 않습니다. 필요한 모든 소프트웨어 및 R-패키지 버전을 확인하려면 재료표 를 참조하세요. 공개된 데이터셋은 6개의 비-NASH, 6개의 NAFL, 6개의 NASH 간 RNA-seq 샘플로 구성PRJNA1023502. 이 프로토콜에서는 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에 나와 있습니다. 이 워크플로우는 리눅스 플랫폼에서 다음 주요 단계를 순차적으로 실행합니다: 첫째, fastp를 사용해 저품질 읽기와 어댑터 시퀀스를 제거하기 위해 원시 시퀀싱 데이터의 엄격한 품질 관리를 수행합니다; 이후 HISAT2는 고품질 리드를 참조 게놈에 정렬하며, Samtools가 정렬 파일을 변환하고 정렬합니다; 마지막으로, FeatureCounts는 유전자 수준 정량화를 수행하여 유전자 발현 매트릭스를 생성하여 후속 분석에 고품질 입력을 제공합니다. 이후 처리 및 통계 분석은 R 환경 내에서 수행되며, 관련 워크플로우와 필요한 소프트웨어 패키지는 그림 1B에 나와 있습니다. 분석을 위해 발표된 연구에서 6개의 비-NASH, 6개의 NAFL, 6개의 NASH 샘플로 구성되었습니다20 (
Access restricted. Please log in or start a trial to view this content.
대량 RNA-seq 데이터 분석은 유전체학, 생물정보학, 통계학, 컴퓨터 과학을 통합하는 학제간 작업으로 특징지어집니다. 완전한 분석 워크플로우는 원시 데이터 전처리, 품질 관리, 서열 정렬, 유전자 수준 정량화, 데이터 정규화, 차별 발현 분석, 생물학적 해석 등 여러 상류 및 하류 단계를 포함합니다. 이 중 원시 시퀀싱 리드를 고품질 유전자 발현 매트릭스로 정확히 변환하는 것이 특히 중요한데, 이는 상류 처리 과정에서 발생하는 오류가 모든 하위 생물학적 결론으로 전파될 수 있기 때문입니다. 따라서 투명하고 표준화된 상류 분석 워크플로우를 구축하는 것은 전사체 연구의 재현성을 높이기 위해 필수적입니다.
이 프로토콜은 fastp(읽기 트리밍 및 품질 관리용), HISAT2(스플라이스 인식 정렬용), featureCounts(유전자 수준 정량화용) 등 널리 사용되는 도구를 통합한 간소화되고 완전한 스크립트 기반 워크플로우...
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 및 다변량 분석 |
| Fastp | 오픈진 | 1.0.1 | FASTQ 데이터의 품질 관리 및 필터링 |
| 특징 수(FeatureCounts) | 월터 앤 엘리자 홀 의학연구소 생물정보학 부서 | 2.0.0 | 그리고 nbsp; 유전자 발현 정량화를 위해 각 유전자에 매핑된 리드 수를 세세요 |
| GGPLOT2 | 가설 | 3.5.2 | 데이터 시각화 |
| 그레펠 | 카밀 슬로비코프스키 | 0.9.6 | 겹치지 않는 텍스트 라벨 |
| 그리지스 | 클라우스 O. 윌케 | 0.5.6 | 능선 구역 만들기 |
| HISAT2 | 존스 홉킨스 대학교 | 2.2.1 | 필터링된 고품질 리드를 기준 게놈과 정렬하세요 |
| R | R 코어 팀 | 4.5.0 | 데이터 계산, 분석 및 시각화를 위한 환경 |
| 콜러브루어 | 에리히 노이비르트 | 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