JoVE 비디오를 활용하시려면 도서관을 통한 기관 구독이 필요합니다. 전체 비디오를 보시려면 로그인하거나 무료 트라이얼을 시작하세요.
대체 스플라이싱(AS) 및 대체 폴리아데닐화(APA)는 전사체 이소형과 그 생성물의 다양성을 확장합니다. 여기에서는 실험 조건에 따라 다양한 AS 및 APA를 검출하고 시각화하기 위해 벌크 RNA-seq 및 3' 말단 시퀀싱 분석을 분석하는 생물정보학 프로토콜을 설명합니다.
실험/생물학적 조건에서 차등 유전자 발현(DGE)을 측정하기 위한 RNA-Seq의 일반적인 분석뿐만 아니라 RNA-seq 데이터를 활용하여 엑손 수준에서 다른 복잡한 조절 메커니즘을 탐색할 수도 있습니다. 대체 스플라이싱 및 폴리아데닐화는 전사 후 수준에서 유전자 발현을 조절하기 위해 다양한 이소형을 생성하여 유전자의 기능적 다양성에 중요한 역할을 하며, 분석을 전체 유전자 수준으로 제한하면 이 중요한 조절 층을 놓칠 수 있습니다. 여기에서는 바이오컨덕터와 DEXSeq, Limma 패키지의 diffSplice 및 rMATS를 포함한 기타 패키지 및 기능을 사용하여 조건에 따른 차등 엑손 및 폴리아데닐화 부위 사용의 식별 및 시각화를 위한 자세한 단계별 분석을 시연합니다.
RNA-seq는 일반적으로 차등 유전자 발현 및유전자 발견을 추정하기 위해 수년에 걸쳐 널리 사용되어 왔습니다1. 또한 다양한 이소 형을 발현하는 유전자로 인해 다양한 엑손 수준 사용량을 추정하는 데 활용할 수 있으므로 전사 후 수준에서 유전자 조절을 더 잘 이해하는 데 기여할 수 있습니다. 대부분의 진핵생물 유전자는 mRNA 발현의 다양성을 증가시키기 위해 대안적 스플라이싱(AS)에 의해 상이한 이소형을 생성한다. AS 이벤트는 다른 패턴으로 나눌 수 있습니다 : ( "카세트") 엑손이 측면 인트론과 함께 전사체에서 완전히 제거되는 완전한 엑손 (SE)의 건너 뛰기; 대안 (공여체) 5' 스플라이스 부위 선택 (A5SS) 및 대안 3' (수용체) 스플라이스 부위 선택 (A3SS) 2개 이상의 스플라이스 부위가 엑손의 양쪽 말단에 존재할 때; 인트론이 성숙한 mRNA 전사체 내에 유지되는 경우 인트론(RI)의 유지 및 한 번에 두 개의 사용 가능한 엑손 중 하나만 보유할 수 있는 엑손 사용(MXE)의 상호 배제 2,3. 대안적 폴리아데닐화 (APA)는 또한 단일 전사체로부터 다수의 mRNA 이소형을 생성하기 위해 대안적인 폴리 (A) 부위를 사용하여 유전자 발현을 조절하는데 중요한 역할을한다4. 대부분의 폴리아데닐화 부위 (pAs)는 3' 비번역 영역 (3' UTR) 내에 위치하여, 다양한 3' UTR 길이를 갖는 mRNA 이소형을 생성한다. 3' UTR이 조절 요소를 인식하기 위한 중앙 허브이기 때문에, 상이한 3' UTR 길이는 mRNA 국소화, 안정성 및 번역(5)에 영향을 미칠 수 있다. 프로토콜6의 세부 사항에서 다른 APA를 검출하도록 최적화 된 3 '최종 시퀀싱 분석의 클래스가 있습니다. 여기에 설명된 파이프라인은 PolyA-seq용으로 설계되었지만 설명된 대로 다른 프로토콜에 맞게 조정할 수 있습니다.
이 연구에서는 차등 엑손 분석 방법7,8(그림 1)의 파이프라인을 제시하며, 이는 엑손 기반(DEXSeq9, diffSplice 10)과 이벤트 기반(전사체 접합의 복제 다변량 분석(rMATS)11)의 두 가지 범주로 나눌 수 있습니다. 엑손 기반 방법은 개별 엑손의 조건에 따른 폴드 변화를 차등적으로 발현된 엑손 사용량을 호출하기 위한 전체 유전자 폴드 변화의 척도와 비교하고, 그로부터 AS 활성의 유전자 수준 측정을 계산합니다. 이벤트 기반 방법은 엑손 인트론 스패닝 접합 읽기를 사용하여 엑손 건너뛰기 또는 인트론 유지와 같은 특정 스플라이싱 이벤트를 감지 및 분류하고 출력3에서 이러한 AS 유형을 구별합니다. 따라서 이러한 방법은 AS12,13의 완전한 분석을위한 보완적인 견해를 제공합니다. DEXSeq(DESeq214 DGE 패키지 기반)와 diffSplice(Limma10 DGE 패키지 기반)는 차동 접합 분석에 가장 널리 사용되는 패키지 중 하나이기 때문에 연구를 위해 선택했습니다. rMATS는 이벤트 기반 분석에 널리 사용되는 방법으로 선택되었습니다. 또 다른 인기 있는 이벤트 기반 방법은 MISO(Mix of Isoforms)1입니다. APA의 경우 엑손 기반 접근 방식을 적용합니다.
그림 1. 분석 파이프라인. 분석에 사용된 단계의 순서도입니다. 단계에는 데이터 획득, 품질 검사 수행 및 읽기 정렬 수행 후 알려진 엑손, 인트론 및 pA 사이트에 대한 주석을 사용하여 읽기 계산, 낮은 카운트 제거 및 정규화를 위한 필터링이 포함됩니다. PolyA-seq 데이터는 diffSplice/DEXSeq 방법을 사용하여 대체 pA 부위에 대해 분석되었고, 벌크 RNA-Seq는 diffSplice/DEXseq 방법을 사용하여 엑손 수준에서 대체 스플라이싱에 대해 분석되었으며, AS 이벤트는 rMATS로 분석되었습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.
이 조사에 사용된 RNA-seq 데이터는 유전자 발현 옴니버스(GEO)(GSE138691)15에서 획득한 것이다. 우리는 이 연구의 마우스 RNA-seq 데이터를 야생형(WT) 및 근맹 유사 유형 1 녹아웃(Mbnl1 KO)의 두 가지 조건 그룹과 함께 각각 3개의 반복으로 사용했습니다. 차등 폴리아데닐화 부위 사용 분석을 입증하기 위해, 마우스 배아 섬유아세포(MEF) PolyA-seq 데이터(GEO Accession GSE60487)16를 얻었다. 데이터에는 야생형(WT), 근맹형 유형 1/유형 2 이중 녹아웃(Mbnl1/2 DKO), Mbnl3 녹다운(KD)이 있는 Mbnl 1/2 DKO 및 Mbnl3 대조군이 있는 Mbnl1/2 DKO(Ctrl)의 네 가지 조건 그룹이 있습니다. 각 조건 그룹은 두 번의 반복실험으로 구성됩니다.
지역 가입 | SRA 실행 번호 | 샘플 이름 | 조건 | 복제 | 조직 | 시퀀싱 | 읽기 길이 | |
RNA-서열 | GSM4116218 | SRR10261601 | Mbnl1KO_Thymus_1 | Mbnl1 녹아웃 | 담당자 1 | 흉선 | 페어링 엔드 | 100 bp |
GSM4116219 | SRR10261602 | Mbnl1KO_Thymus_2 | Mbnl1 녹아웃 | 담당자 2 | 흉선 | 페어링 엔드 | 100 bp | |
GSM4116220 | SRR10261603 | Mbnl1KO_Thymus_3 | Mbnl1 녹아웃 | 담당자 3 | 흉선 | 페어링 엔드 | 100 bp | |
GSM4116221 | SRR10261604 | WT_Thymus_1 | 와일드 타입 | 담당자 1 | 흉선 | 페어링 엔드 | 100 bp | |
GSM4116222 | SRR10261605 | WT_Thymus_2 | 와일드 타입 | 담당자 2 | 흉선 | 페어링 엔드 | 100 bp | |
GSM4116223 | SRR10261606 | WT_Thymus_3 | 와일드 타입 | 담당자 3 | 흉선 | 페어링 엔드 | 100 bp | |
3P-시퀀스 | GSM1480973 | SRR1553129 | WT_1 | 와일드 타입 (WT) | 담당자 1 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp |
GSM1480974 | SRR1553130 | WT_2 | 와일드 타입 (WT) | 담당자 2 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp | |
GSM1480975 | SRR1553131 | DKO_1 | Mbnl 1/2 더블 녹아웃 (DKO) | 담당자 1 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp | |
GSM1480976 | SRR1553132 | DKO_2 | Mbnl 1/2 더블 녹아웃 (DKO) | 담당자 2 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp | |
GSM1480977 | SRR1553133 | DKOsiRNA_1 | Mbnl 3 siRNA (KD)를 사용한 Mbnl 1/2 이중 녹아웃 | 담당자 1 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp | |
GSM1480978 | SRR1553134 | DKOsiRNA_2 | Mbnl 3 siRNA (KD)를 사용한 Mbnl 1/2 이중 녹아웃 | 담당자 2 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 36 bp | |
GSM1480979 | SRR1553135 | DKONTsiRNA_1 | 비표적 siRNA를 사용한 Mbnl 1/2 이중 녹아웃(Ctrl) | 담당자 1 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp | |
GSM1480980 | SRR1553136 | DKONTsiRNA_2 | 비표적 siRNA를 사용한 Mbnl 1/2 이중 녹아웃(Ctrl) | 담당자 2 | 마우스 배아 섬유아세포(MEF) | 단일 종단 | 40 bp |
표 1. 분석에 사용된 RNA-Seq 및 PolyA-seq 데이터 세트의 요약.
1. 분석에 사용되는 도구 및 R 패키지 설치
conda install -c daler sratoolkit
conda install -c conda-forge parallel
conda install -c bioconda star bowtie fastqc rmats rmats2sashimiplot samtools fasterq-dump cutadapt bedtools deeptools
bioc_packages<- c("DEXSeq", "Rsubread", "EnhancedVolcano", "edgeR", "limma", "maser","GenomicRanges")
packages<- c("magrittr", "rtracklayer", "tidyverse", "openxlsx", "BiocManager")
#Install if not already installed
installed_packages<-packages%in% rownames(installed.packages())
installed_bioc_packages<-bioc_packages%in% rownames(installed.packages())
if(any(installed_packages==FALSE)) {
install.packages(packages[!installed_packages],dependencies=TRUE)
BiocManager::install(packages[!installed_bioc_packages], dependencies=TRUE)
}
2. RNA-seq를 이용한 대체 접합(AS) 분석
seq 10261601 10261606 | parallel prefetch SRR{}
parallel -j 3 fastq-dump --gzip --skip-technical --read-filter pass --dumpbase --split-e --clip --origfmt {} :::
wget -nv -O annotation.gtf.gz http://ftp.ensembl.org/pub/release-103/gtf/mus_musculus/Mus_musculus.GRCm39.103.gtf.gz \ && gunzip -f annotation.gtf.gz
wget -nv -O genome.fa.gz http://ftp.ensembl.org/pub/release-103/fasta/mus_musculus/dna/Mus_musculus.GRCm39.dna.primary_assembly.fa.gz \ && gunzip -f genome.fa.gz
GTF=$(readlink -f annotation.gtf)
GENOME=$(readlink -f genome.fa)
mkdir fastqc_out
parallel "fastqc {} -o fastqc_out" ::: $RAW_DATA/*.fastq.gz
#Build STAR index
GDIR=STAR_indices
mkdir $GDIR
STAR --runMode genomeGenerate --genomeFastaFiles $GENOME --sjdbGTFfile $GTF --runThreadN 8 --genomeDir $GDIR
ODIR=results/mapping
mkdir -p $ODIR
#Align reads to the genome
for fq1 in $RAW_DATA/*R1.fastq.gz;
do
fq2=$(echo $fq1| sed 's/1.fastq.gz/2.fastq.gz/g');
OUTPUT=$(basename ${fq1}| sed 's/R1.fastq.gz//g');
STAR --genomeDir $GDIR \
--runThreadN 12 \
--readFilesCommand zcat \
--readFilesIn ${fq1}${fq2}\
--outFileNamePrefix $ODIR\/${OUTPUT} \
--outSAMtype BAM SortedByCoordinate \
--outSAMunmapped Within \
--outSAMattributes Standard
Done
Rscript prepare_mm_exon_annotation.R annotation.gtf
packages<- c("Rsubread","tidyverse", "magrittr", "EnhancedVolcano", "edgeR","openxlsx")
invisible(lapply(packages, library, character.only=TRUE))
load("mm_exon_anno.RData")
countData <- dir("bams", pattern=".bam$", full.names=T) %>%
featureCounts(annot.ext=anno,
isGTFAnnotationFile=FALSE,
minMQS=0,useMetaFeatures=FALSE,
allowMultiOverlap=TRUE,
largestOverlap=TRUE,
countMultiMappingReads=FALSE,
primaryOnly=TRUE,
isPairedEnd=TRUE,
nthreads=12)
# Non-specific filtering: Remove the exons with low counts
isexpr<- rownames(countData$counts)[rowSums(cpm(countData$counts)>1) >=3]
countData$counts<-countData$counts[rownames(countData$counts) %in%isexpr, ]
anno<-anno%>% filter(GeneID%in% rownames(countData$counts))
# Remove genes with only 1 site and NA in geneIDs
dn<-anno%>%group_by(GeneID)%>%summarise(nsites=n())%>% filter(nsites>1&!is.na(GeneID))
anno<-anno%>% filter(GeneID%in%dn$GeneID)
countData$counts<-countData$counts[rownames(countData$counts) %in%anno$GeneID, ]
library(DEXSeq)
sampleTable<-data.frame(row.names= c("Mbnl1KO_Thymus_1", "Mbnl1KO_Thymus_2", "Mbnl1KO_Thymus_3", "WT_Thymus_1", "WT_Thymus_2", "WT_Thymus_3"), condition= rep(c("Mbnl1_KO", "WT"),c(3,3)), libType= rep(c("paired-end")))
exoninfo<-anno[anno$GeneID%in% rownames(countData$counts),]
exoninfo<-GRanges(seqnames=anno$Chr,
ranges=IRanges(start=anno$Start, end=anno$End, width=anno$Width),strand=Rle(anno$Strand))
mcols(exoninfo)$TranscriptIDs<-anno$TranscriptIDs
mcols(exoninfo)$Ticker<-anno$Ticker
mcols(exoninfo)$ExonID<-anno$ExonID
mcols(exoninfo)$n<-anno$n
mcols(exoninfo)$GeneID<-anno$GeneID
transcripts_l= strsplit(exoninfo$TranscriptIDs, "\\,")
save(countData, sampleTable, exoninfo, transcripts_l, file="AS_countdata.RData")
dxd<-DEXSeqDataSet(countData$counts,sampleData=sampleTable, design=~sample+exon+condition:exon,featureID=exoninfo$ExonID,groupID=exoninfo$GeneID,featureRanges=exoninfo, transcripts=transcripts_l)
dxd %<>% estimateSizeFactors %>% estimateDispersions %T>% plotDispEsts
dxd%<>%testForDEU%>%estimateExonFoldChanges(fitExpToVar=
"condition")#Estimate fold changes
dxr=DEXSeqResults(dxd)
plotDEXSeq(dxr,"Wnk1", displayTranscripts=TRUE, splicing=TRUE,legend
=TRUE,cex.axis=1.2,cex=1.3,lwd=2)
library(limma)
library(edgeR)
mycounts=countData$counts
#Change the rownames of the countdata to exon Ids instead of genes for unique rownames.
rownames(mycounts) = exoninfo$ExonID
dge<-DGEList(counts=mycounts)
#Filtering
isexpr<- rowSums(cpm(dge)>1) >=3
dge<-dge[isexpr,,keep.lib.sizes=FALSE]
#Extract the exon annotations for only transcripts meeting non-specific filter
exoninfo=anno%>% filter(ExonID%in% rownames(dge$counts))
#Convert the exoninfo into GRanges object
exoninfo1<-GRanges(seqnames=exoninfo$Chr,
ranges=IRanges(start=exoninfo$Start, end=exoninfo$End, width=exoninfo$Width),strand=Rle(exoninfo$Strand))
mcols(exoninfo1)$TranscriptIDs<-exoninfo$TranscriptIDs
mcols(exoninfo1)$Ticker<-exoninfo$Ticker
mcols(exoninfo1)$ExonID<-exoninfo$ExonID
mcols(exoninfo1)$n<-exoninfo$n
mcols(exoninfo1)$GeneID<-exoninfo$GeneID
transcripts_l= strsplit(exoninfo1$TranscriptIDs, "\\,")
dge<-calcNormFactors(dge)
Treat<- factor(sampleTable$condition)
design<- model.matrix(~0+Treat)
colnames(design) <- levels(Treat)
v<-voom(dge,design,plot=FALSE)
fit<-lmFit(v,design)
fit<-eBayes(fit)
colnames(fit)
cont.matrix<-makeContrasts(
Mbnl1_KO_WT=Mbnl1_KO-WT,
levels=design)
fit2<-contrasts.fit(fit,cont.matrix)
ex<-diffSplice(fit2,geneid=exoninfo$GeneID,exonid=exoninfo$ExonID)
ts<-topSplice(ex,n=Inf,FDR=0.1, test="t", sort.by="logFC")
tg<-topSplice(ex,n=Inf,FDR=0.1, test="simes")
plotSplice(ex,geneid="Wnk1", FDR=0.1)
#Volcano plot
EnhancedVolcano(ts,lab=ts$ExonID,selectLab= head((ts$ExonID),2000), xlab= bquote(~Log[2]~'fold change'), x='logFC', y='P.Value', title='Volcano Plot', subtitle='Mbnl1_KO vs WT (Limma_diffSplice)', FCcutoff=2, labSize=4,legendPosition="right", caption= bquote(~Log[2]~"Fold change cutoff, 2; FDR 10%"))
mkdir rMATS_analysis
cd bams/
ls -pd "$PWD"/*| grep "WT"| tr '\n'','> Wt.txt
ls -pd "$PWD"/*| grep "Mb"| tr '\n'','> KO.txt
mv *.txt ../rMATS_analysis
python rmats-turbo/rmats.py --b1 KO.txt --b2 Wt.txt --gtf annotation.gtf -t paired --readLength 50 --nthread 8 --od rmats_out/ --tmp rmats_tmp --task pos
library(maser)
mbnl1<-maser("/rmats_out/", c("WT","Mbnl1_KO"), ftype="JCEC")
#Filtering out events by coverage
mbnl1_filt<-filterByCoverage(mbnl1,avg_reads=5)
#Top splicing events at 10% FDR
mbnl1_top<-topEvents(mbnl1_filt,fdr=0.1, deltaPSI=0.1)
mbnl1_top
#Check the gene events for a particular gene
mbnl1_wnk1<-geneEvents(mbnl1_filt,geneS="Wnk1", fdr=0.1, deltaPSI=0.1)
maser::display(mbnl1_wnk1,"SE")
plotGenePSI(mbnl1_wnk1,type="SE", show_replicates
=TRUE)
volcano(mbnl1_filt,fdr=0.1, deltaPSI=0.1,type="SE")
+xlab("deltaPSI")+ylab("Log10 Adj. Pvalue")+ggtitle("Volcano Plot of exon skipping events")
python ./src/rmats2sashimiplot/rmats2sashimiplot.py --b1 ../bams/WT_Thymus_1.bam,../bams/WT_Thymus_2.bam,../bams/WT_Thymus_3.bam --b2 ../bams/Mbnl1KO_Thymus_1.bam,../bams/Mbnl1KO_Thymus_2.bam,../bams/Mbnl1KO_Thymus_3.bam -t SE -e ../rMATS_analysis/rmats_out/SE.MATS.JC.txt --l1 WT --l2 Mbnl1_KO --exon_s 1 --intron_s 5 -o ../rMATS_analysis/rmats2shasmi_output
3. 3' 말단 시퀀싱을 사용한 대체 폴리아데닐화(APA) 분석
anno<- read.table(file= "flanking60added.pA_annotation.bed",
stringsAsFactors=FALSE, check.names=FALSE, header=FALSE, sep="")
colnames(anno) <- c("chrom", "chromStart", "chromEnd", "name", "score", "strand", "rep", "annotation", "gene_name", "gene_id")
anno<- dplyr::select(anno,name,chrom, chromStart,chromEnd, strand,gene_id,gene_name,rep)
colnames(anno) <- c("GeneID", "Chr", "Start", "End", "Strand", "Ensembl", "Symbol", "repID")
countData<- dir("bamfiles", pattern="sorted.bam$", full.names=TRUE) %>%
# Read all bam files as input for featureCounts
featureCounts(annot.ext=anno, isGTFAnnotationFile= FALSE,minMQS=0,useMetaFeatures= TRUE,allowMultiOverlap=TRUE, largestOverlap= TRUE,strandSpecific=1, countMultiMappingReads =TRUE,primaryOnly= TRUE,isPairedEnd= FALSE,nthreads=12)%T>%
save(file="APA_countData.Rdata")
load(file= "APA_countData.Rdata")# Skip this step if already loaded
# Non-specific filtering: Remove the pA sites not differentially expressed in the samples
countData<-countData$counts%>%as.data.frame%>% .[rowSums(edgeR::cpm(.)>1) >=2, ]
anno%<>% .[.$GeneID%in% rownames(countData), ]
# Remove genes with only 1 site and NA in geneIDs
dnsites<-anno%>%group_by(Symbol)%>%summarise(nsites=n())%>% filter(nsites>1&!is.na(Symbol))
anno<-anno%>% filter(Symbol%in%dnsites$Symbol)
countData<-countData[rownames(countData) %in%anno$GeneID, ]
c("DEXSeq", "GenomicRanges") %>% lapply(library, character.only=TRUE) %>%invisible
sampleTable1<- data.frame(row.names= c("WT_1","WT_2","DKO_1","DKO_2"),
condition= c(rep("WT", 2), rep("DKO", 2)),
libType= rep("single-end", 4))
# Prepare the GRanges object for DEXSeqDataSet object construction
PASinfo <- GRanges(seqnames = anno$Chr,
ranges = IRanges(start = anno$Start, end = anno$End),strand = Rle(anno$Strand))
mcols(PASinfo)$PASID<-anno$repID
mcols(PASinfo)$GeneEns<-anno$Ensembl
mcols(PASinfo)$GeneID<-anno$Symbol
# Prepare the new feature IDs, replace the strand information with letters to match the current pA site clusterID
new.featureID <- anno$Strand %>% as.character %>% replace(. %in% "+", "F") %>% replace(. %in% "-", "R") %>% paste0(as.character(anno$repID), .)
# Select the read counts of the condition WT and DKO
countData1<- dplyr::select(countData, SRR1553129.sorted.bam, SRR1553130.sorted.bam, SRR1553131.sorted.bam, SRR1553132.sorted.bam)
# Rename the columns of countData using sample names in sampleTable
colnames(countData1) <- rownames(sampleTable1)
dxd1<-DEXSeqDataSet(countData=countData1,
sampleData=sampleTable1,
design=~sample+exon+condition:exon,
featureID=new.featureID,
groupID=anno$Symbol,
featureRanges=PASinfo)
dxd1$condition<- factor(dxd1$condition, levels= c("WT", "DKO"))
# The contrast pair will be "DKO - WT"
dxd1 %<>% estimateSizeFactors %>% estimateDispersions %T>% plotDispEsts
dxd1 %<>% testForDEU %>% estimateExonFoldChanges(fitExpToVar = "condition")
dxr1 <- DEXSeqResults(dxd1)
dxr1
mcols(dxr1)$description
table(dxr1$padj<0.1) # Check the number of differential pA sites (FDR < 0.1)
table(tapply(dxr1$padj<0.1, dxr1$groupID, any)) # Check the number of gene overlapped with differential pA site
# Select the top 100 significant differential pA sites ranked by FDR
topdiff.PAS<- dxr1%>%as.data.frame%>%rownames_to_column%>%arrange(padj)%$%groupID[1:100]
# Apply plotDEXSeq for the visualization of differential polyA usage
plotDEXSeq(dxr1,"S100a7a", legend=TRUE, expression=FALSE,splicing=TRUE, cex.axis=1.2, cex=1.3,lwd=2)
# Apply perGeneQValue to check the top genes with differential polyA site usage
dxr1%<>% .[!is.na(.$padj), ]
dgene<- data.frame(perGeneQValue= perGeneQValue (dxr1)) %>%rownames_to_column("groupID")
dePAS_sig1<-dxr1%>% data.frame() %>%
dplyr::select(-matches("dispersion|stat|countData|genomicData"))%>%
inner_join(dgene)%>%arrange(perGeneQValue)%>%distinct()%>%
filter(padj<0.1)
# Apply EnhancedVolcano package to visualise differential polyA site usage
"EnhancedVolcano"%>% lapply(library, character.only=TRUE) %>%invisible
EnhancedVolcano(dePAS_sig1, lab=dePAS_sig1$groupID, x='log2fold_DKO_WT',
y='pvalue',title='Volcano Plot',subtitle='DKO vs WT',
FCcutoff=1,labSize=4, legendPosition="right",
caption= bquote(~Log[2]~"Fold change cutoff, 1; FDR 10%"))
contrast.matrix<-makeContrasts(DKO_vs_WT=DKO-
WT,Ctrl_vs_DKO=Ctrl-DKO,
KD_vs_Ctrl=KD-Ctrl,KD_vs_DKO=KD-DKO,levels=design)
fit2<-fit%>%contrasts.fit(contrast.matrix)%>%eBayes
summary(decideTests(fit2))
ex<-diffSplice(fit2,geneid=anno$Symbol,exonid=new.featureID)
topSplice(ex) #Check the top significant results with topSplice
sig1<-topSplice(ex,n=Inf,FDR=0.1,coef=1, test="t", sort.by="logFC")
sig1.genes<-topSplice(ex,n=Inf,FDR=0.1,coef=1, test="simes")
plotSplice(ex, coef=1,geneid="S100a7a", FDR = 0.1)
plotSplice(ex,coef=1,geneid="Tpm1", FDR = 0.1)
plotSplice(ex,coef=1,geneid="Smc6", FDR = 0.1)
EnhancedVolcano(sig1, lab=sig1$GeneID,xlab= bquote(~Log[2]~'fold change'),
x='logFC', y='P.Value', title='Volcano Plot', subtitle='DKO vs WT',
FCcutoff=1, labSize=6, legendPosition="right")
위의 단계별 워크플로우를 실행한 후 AS 및 APA 분석 출력과 대표 결과는 다음과 같이 생성된 테이블 및 데이터 플롯 형태입니다.
만큼:
AS 분석의 주요 출력(diffSplice에 대한 보충 표 1; DEXSeq)에 대한 표 2는 조건에 따른 차등 용법을 나타내는 엑손의 목록이고, 통계적 유의성에 의해 순위가 매겨진 하나 이상의 구성 엑손의 유의한 전체 스?...
이 연구에서는 대량 RNA-Seq 및 3' 말단 시퀀싱 데이터에서 AS 및 APA를 검출하기 위한 엑손 기반 및 이벤트 기반 접근 방식을 평가했습니다. 엑손 기반 AS 접근법은 차등적으로 발현된 엑손의 목록과 전체 유전자 수준의 차등 스플라이싱 활성의 통계적 유의성에 따라 정렬된 유전자 수준 순위를 모두 생성합니다(표 1-2, 4-5). diffSplice 패키지의 경우, 차등 사용은 엑손 수준에서 가중 선형 모?...
저자는 공개 할 것이 없습니다.
이 연구는 호주 연구위원회 (ARC) 미래 펠로우십 (FT16010043) 및 ANU 선물 계획의 지원을 받았습니다.
Name | Company | Catalog Number | Comments |
Not relevent for computational study |
JoVE'article의 텍스트 или 그림을 다시 사용하시려면 허가 살펴보기
허가 살펴보기더 많은 기사 탐색
This article has been published
Video Coming Soon
Copyright © 2025 MyJoVE Corporation. 판권 소유