Bu içeriği görüntülemek için JoVE aboneliği gereklidir. Oturum açın veya ücretsiz deneme sürümünü başlatın.
Alternatif ekleme (AS) ve alternatif poliadenilasyon (APA), transkript izoformlarının ve ürünlerinin çeşitliliğini genişletir. Burada, deneysel koşullar arasında değişen AS ve APA'yı tespit etmek ve görselleştirmek için toplu RNA-seq ve 3' uç dizileme testlerini analiz etmek için biyoinformatik protokolleri açıklıyoruz.
Deneysel / biyolojik koşullar boyunca diferansiyel gen ekspresyonunu (DGE) ölçmek için RNA-Seq'in tipik analizinin yanı sıra, RNA-seq verileri ekzon seviyesindeki diğer karmaşık düzenleyici mekanizmaları keşfetmek için de kullanılabilir. Alternatif ekleme ve poliadenilasyon, transkripsiyon sonrası seviyede gen ekspresyonunu düzenlemek için farklı izoformlar üreterek bir genin fonksiyonel çeşitliliğinde çok önemli bir rol oynar ve analizleri tüm gen seviyesine sınırlamak bu önemli düzenleyici katmanı kaçırabilir. Burada, Bioconductor ve DEXSeq, Limma paketinden diffSplice ve rMATS dahil olmak üzere diğer paketleri ve fonksiyonları kullanarak, koşullar arasında diferansiyel ekzon ve poliadenilasyon sahası kullanımının tanımlanması ve görselleştirilmesi için ayrıntılı adım adım analizler gösteriyoruz.
RNA-seq, yıllar boyunca tipik olarak diferansiyel gen ekspresyonunu ve gen keşfini tahmin etmek için yaygın olarak kullanılmıştır1. Ek olarak, farklı izoformları ifade eden gen nedeniyle değişen ekzon seviyesi kullanımını tahmin etmek için de kullanılabilir, böylece transkripsiyon sonrası seviyede gen düzenlemesinin daha iyi anlaşılmasına katkıda bulunur. Ökaryotik genlerin çoğunluğu, mRNA ekspresyonunun çeşitliliğini arttırmak için alternatif ekleme (AS) ile farklı izoformlar üretir. AS olayları farklı kalıplara ayrılabilir: bir ("kaset") ekzonun yan tarafındaki intronlarla birlikte transkriptten tamamen çıkarıldığı tam ekzonların (SE) atlanması; ekzonun her iki ucunda iki veya daha fazla ekleme bölgesi bulunduğunda alternatif (donör) 5' ekleme yeri seçimi (A5SS) ve alternatif 3' (alıcı) ekleme yeri seçimi (A3SS); Bir intron olgun mRNA transkriptinde tutulduğunda intronların (RI) tutulması ve mevcut iki ekzondan sadece birininbir seferde tutulabildiği ekzon kullanımının (MXE) karşılıklı dışlanması 2,3. Alternatif poliadenilasyon (APA), tek bir transkript4'ten çoklu mRNA izoformları üretmek için alternatif poli (A) bölgeleri kullanarak gen ekspresyonunun düzenlenmesinde de önemli bir rol oynar. Çoğu poliadenilasyon bölgesi (pAs), 3' çevrilmemiş bölgede (3' UTR'ler) bulunur ve çeşitli 3' UTR uzunluklarına sahip mRNA izoformları üretir. 3' UTR, düzenleyici unsurları tanımak için merkezi merkez olduğundan, farklı 3' UTR uzunlukları mRNA lokalizasyonunu, kararlılığını ve translasyonunu etkileyebilir5. Protokol6'nın ayrıntılarında farklılık gösteren APA'yı tespit etmek için optimize edilmiş bir 3' uç sıralama tahlilleri sınıfı vardır. Burada açıklanan boru hattı PolyA-seq için tasarlanmıştır, ancak açıklandığı gibi diğer protokoller için uyarlanabilir.
Bu çalışmada, ekzon bazlı (DEXSeq9, diffSplice10) ve olay tabanlı (Multivariate Analysis of Transcript Splicing (rMATS)11) olmak üzere iki geniş kategoriye ayrılabilen diferansiyel ekzon analiz yöntemleri 7,8 (Şekil 1) boru hattını sunuyoruz. Ekzon tabanlı yöntemler, bireysel ekzonların koşulları arasındaki kıvrım değişimini, farklı şekilde ifade edilen ekzon kullanımını çağırmak için genel gen kıvrım değişiminin bir ölçüsüyle karşılaştırır ve bundan AS aktivitesinin gen düzeyinde bir ölçüsünü hesaplar. Olay tabanlı yöntemler, ekzon atlama veya intronların tutulması gibi belirli ekleme olaylarını algılamak ve sınıflandırmak için ekzon intronunu kapsayan bağlantı okumalarını kullanır ve çıktı3'teki bu AS türlerini ayırt eder. Bu nedenle, bu yöntemler AS12,13'ün tam bir analizi için tamamlayıcı görüşler sağlar. Diferansiyel ekleme analizi için en yaygın kullanılan paketler arasında yer aldıkları için çalışma için DEXSeq (DESeq214 DGE paketine dayanarak) ve diffSplice (Limma10 DGE paketine dayanarak) seçtik. rMATS, olay tabanlı analiz için popüler bir yöntem olarak seçildi. Bir başka popüler olay tabanlı yöntem MISO (İzoform Karışımı)1'dir. APA için ekzon tabanlı yaklaşımı uyarlıyoruz.
Şekil 1. Analiz işlem hattı. Analizde kullanılan adımların akış şeması. Adımlar şunları içerir: verileri elde etmek, kalite kontrolleri yapmak ve okuma hizalaması, ardından bilinen ekzonlar, intronlar ve pA siteleri için ek açıklamalar kullanarak okumaları saymak, düşük sayıları kaldırmak için filtreleme ve normalleştirme. PolyA-seq verileri diffSplice/DEXSeq yöntemleri kullanılarak alternatif pA bölgeleri için, bulk RNA-Seq diffSplice/DEXseq yöntemleri ile ekzon düzeyinde alternatif ekleme için ve AS olayları rMATS ile analiz edilmiştir. Bu şeklin daha büyük bir versiyonunu görüntülemek için lütfen buraya tıklayın.
Bu araştırmada kullanılan RNA-seq verileri, Gen İfade Omnibus'undan (GEO) (GSE138691)15 elde edilmiştir. Bu çalışmadan elde edilen fare RNA-seq verilerini iki koşul grubuyla kullandık: vahşi tip (WT) ve her biri üç kopya ile Kas körü benzeri tip 1 nakavt (Mbnl1 KO). Diferansiyel poliadenilasyon alanı kullanım analizini göstermek için, fare embriyo fibroblastları (MEF'ler) PoliA-seq verilerini elde ettik (GEO Katılımı GSE60487)16. Verilerin dört koşul grubu vardır: Wild-type (WT), Kas körü benzeri tip1/tip 2 çift nakavt (Mbnl1/2 DKO), Mbnl3 knockdown (KD) ile Mbnl 1/2 DKO ve Mbnl3 kontrollü Mbnl1/2 DKO (Ctrl). Her koşul grubu iki çoğaltmadan oluşur.
GEO Katılımı | SRA Çalıştırma numarası | Örnek adı | Koşul | Çoğaltmak | Doku | Sıralama | Okuma uzunluğu | |
RNA-Seq | GSM4116218 | SRR10261601 | Mbnl1KO_Thymus_1 | Mbnl1 nakavt | Temsilci 1 | Timus | Eşleştirilmiş uç | 100 bp |
GSM4116219 | SRR10261602 | Mbnl1KO_Thymus_2 | Mbnl1 nakavt | Temsilci 2 | Timus | Eşleştirilmiş uç | 100 bp | |
GSM4116220 göster | SRR10261603 | Mbnl1KO_Thymus_3 | Mbnl1 nakavt | Temsilci 3 | Timus | Eşleştirilmiş uç | 100 bp | |
GSM4116221 | SRR10261604 | WT_Thymus_1 | Vahşi tip | Temsilci 1 | Timus | Eşleştirilmiş uç | 100 bp | |
GSM4116222 | SRR10261605 | WT_Thymus_2 | Vahşi tip | Temsilci 2 | Timus | Eşleştirilmiş uç | 100 bp | |
GSM4116223 | SRR10261606 | WT_Thymus_3 | Vahşi tip | Temsilci 3 | Timus | Eşleştirilmiş uç | 100 bp | |
3P-Seks | GSM1480973 | SRR1553129 | WT_1 | Vahşi tip (WT) | Temsilci 1 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp |
GSM1480974 | SRR1553130 | WT_2 | Vahşi tip (WT) | Temsilci 2 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp | |
GSM1480975 | SRR1553131 | DKO_1 | Mbnl 1/2 çift nakavt (DKO) | Temsilci 1 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp | |
GSM1480976 | SRR1553132 | DKO_2 | Mbnl 1/2 çift nakavt (DKO) | Temsilci 2 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp | |
GSM1480977 göster | SRR1553133 | DKOsiRNA_1 | Mbnl 3 siRNA (KD) ile Mbnl 1/2 çift nakavt | Temsilci 1 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp | |
GSM1480978 | SRR1553134 | DKOsiRNA_2 | Mbnl 3 siRNA (KD) ile Mbnl 1/2 çift nakavt | Temsilci 2 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 36 bg | |
GSM1480979 | SRR1553135 | DKONTsiRNA_1 | Mbnl 1/2 çift nakavt, hedeflemeyen siRNA (Ctrl) ile | Temsilci 1 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp | |
GSM1480980 | SRR1553136 | DKONTsiRNA_2 | Mbnl 1/2 çift nakavt, hedeflemeyen siRNA (Ctrl) ile | Temsilci 2 | Fare embriyonik Fibroblastları (MEF'ler) | Tek uçlu | 40 bp |
Tablo 1. Analiz için kullanılan RNA-Seq ve PolyA-seq veri setlerinin özeti.
1. Analizde kullanılan aletlerin ve R paketlerinin kurulumu
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 kullanarak alternatif ekleme (AS) analizi
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' uç dizileme kullanarak alternatif poliadenilasyon (APA) analizi
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")
Yukarıdaki adım adım iş akışını çalıştırdıktan sonra, AS ve APA analiz çıktıları ve temsili sonuçlar, aşağıdaki gibi oluşturulan tablolar ve veri grafikleri şeklindedir.
GİBİ:
AS analizinin ana çıktısı (diffSplice için Ek Tablo 1; DEXSeq için Tablo 2), koşullar arasında diferansiyel kullanımı gösteren ekzonların bir listesi ve istatistiksel anlamlılığa göre sıralanmış, bir veya daha fazla kurucu e...
Bu çalışmada, toplu RNA-Seq ve 3' uç dizileme verilerinde AS ve APA'yı saptamak için ekzon tabanlı ve olay tabanlı yaklaşımlar değerlendirildi. Ekzon tabanlı AS yaklaşımları, hem diferansiyel olarak eksprese edilen ekzonların bir listesini hem de genel gen seviyesi diferansiyel ekleme aktivitesinin istatistiksel önemine göre sıralanmış bir gen seviyesi sıralaması üretir (Tablo 1-2, 4-5). Diferansiyel kullanım, bir ekzonun diferansiyel log kıvrım değişimini aynı gen içindeki...
Yazarların açıklayacak hiçbir şeyleri yoktur.
Bu çalışma, Avustralya Araştırma Konseyi (ARC) Future Fellowship (FT16010043) ve ANU Futures Scheme tarafından desteklenmiştir.
Name | Company | Catalog Number | Comments |
Not relevent for computational study |
Bu JoVE makalesinin metnini veya resimlerini yeniden kullanma izni talebi
Izin talebiThis article has been published
Video Coming Soon
JoVE Hakkında
Telif Hakkı © 2020 MyJove Corporation. Tüm hakları saklıdır