È necessario avere un abbonamento a JoVE per visualizzare questo. Accedi o inizia la tua prova gratuita.
Lo splicing alternativo (AS) e la poliadenilazione alternativa (APA) espandono la diversità delle isoforme di trascrizione e dei loro prodotti. Qui, descriviamo i protocolli bioinformatici per analizzare i saggi di sequenziamento di massa dell'RNA-seq e 3' per rilevare e visualizzare AS e APA che variano in base alle condizioni sperimentali.
Oltre all'analisi tipica dell'RNA-Seq per misurare l'espressione genica differenziale (DGE) in condizioni sperimentali/biologiche, i dati di RNA-seq possono anche essere utilizzati per esplorare altri complessi meccanismi regolatori a livello di esone. Lo splicing alternativo e la poliadenilazione svolgono un ruolo cruciale nella diversità funzionale di un gene generando diverse isoforme per regolare l'espressione genica a livello post-trascrizionale e limitando le analisi all'intero livello genico può mancare questo importante strato regolatore. Qui, dimostriamo analisi dettagliate passo dopo passo per l'identificazione e la visualizzazione dell'utilizzo differenziale del sito di esone e poliadenilazione in tutte le condizioni, utilizzando Bioconductor e altri pacchetti e funzioni, tra cui DEXSeq, diffSplice dal pacchetto Limma e rMATS.
L'RNA-seq è stato ampiamente utilizzato nel corso degli anni, tipicamente per stimare l'espressione genica differenziale e la scopertagenica 1. Inoltre, può anche essere utilizzato per stimare l'uso variabile del livello di esone a causa del gene che esprime diverse isoforme, contribuendo così a una migliore comprensione della regolazione genica a livello post-trascrizionale. La maggior parte dei geni eucariotici genera diverse isoforme mediante splicing alternativo (AS) per aumentare la diversità dell'espressione dell'mRNA. Gli eventi AS possono essere suddivisi in diversi modelli: salto di esoni completi (SE) in cui un esone ("cassetta") viene completamente rimosso dalla trascrizione insieme ai suoi introni laterali; selezione alternativa (donatore) del sito di giunzione 5' (A5SS) e selezione alternativa del sito di giunzione 3' (accettore) (A3SS) quando due o più siti di giunzione sono presenti su entrambe le estremità di un esone; ritenzione degli introni (RI) quando un introne viene trattenuto all'interno del trascritto dell'mRNA maturo e mutua esclusione dell'uso dell'esone (MXE) in cui solo uno dei due esoni disponibili può essere trattenuto alla volta 2,3. La poliadenilazione alternativa (APA) svolge anche un ruolo importante nella regolazione dell'espressione genica utilizzando siti di poli alternativi (A) per generare più isoforme di mRNA da una singola trascrizione4. La maggior parte dei siti di poliadenilazione (pAs) si trovano nella regione 3' non tradotta (3' UTR), generando isoforme di mRNA con diverse lunghezze UTR 3'. Poiché l'UTR 3' è l'hub centrale per il riconoscimento degli elementi regolatori, diverse lunghezze UTR 3' possono influenzare la localizzazione, la stabilità e la traduzione dell'mRNA5. Esistono saggi di sequenziamento finale di classe 3' ottimizzati per rilevare APA che differiscono nei dettagli del protocollo6. La pipeline qui descritta è progettata per PolyA-seq, ma può essere adattata per altri protocolli come descritto.
In questo studio, presentiamo una pipeline di metodi di analisi differenziale degli esoni7,8 (Figura 1), che possono essere suddivisi in due grandi categorie: basati sull'esone (DEXSeq9, diffSplice 10) e basati sugli eventi (replicate Multivariate Analysis of Transcript Splicing (rMATS)11). I metodi basati sull'esone confrontano il cambiamento di piega tra le condizioni dei singoli esoni, contro una misura del cambiamento complessivo della piega genica per chiamare l'uso differenziale dell'esone, e da ciò calcolare una misura a livello genetico dell'attività AS. I metodi basati su eventi utilizzano letture di giunzione esone-introne per rilevare e classificare eventi di splicing specifici come il salto dell'esone o la ritenzione di introni e distinguere questi tipi di AS nell'output3. Pertanto, questi metodi forniscono punti di vista complementari per un'analisi completa di AS12,13. Abbiamo selezionato DEXSeq (basato sul pacchetto DESeq214 DGE) e diffSplice (basato sul pacchetto Limma10 DGE) per lo studio in quanto sono tra i pacchetti più utilizzati per l'analisi di splicing differenziale. rMATS è stato scelto come metodo popolare per l'analisi basata sugli eventi. Un altro metodo popolare basato su eventi è MISO (Mixture of Isoforms)1. Per l'APA adattiamo l'approccio basato sull'esone.
Figura 1. Pipeline di analisi. Diagramma di flusso dei passaggi utilizzati nell'analisi. I passaggi includono: ottenere i dati, eseguire controlli di qualità e allineamento delle letture seguito dal conteggio delle letture utilizzando annotazioni per esoni, introni e siti pA noti, filtraggio per rimuovere conteggi bassi e normalizzazione. I dati di PolyA-seq sono stati analizzati per siti pA alternativi utilizzando metodi diffSplice/DEXSeq, RNA-Seq di massa sono stati analizzati per lo splicing alternativo a livello di esone con metodi diffSplice/DEXseq e gli eventi AS analizzati con rMATS. Fare clic qui per visualizzare una versione ingrandita di questa figura.
I dati RNA-seq utilizzati in questa indagine sono stati acquisiti da Gene Expression Omnibus (GEO) (GSE138691)15. Abbiamo utilizzato i dati RNA-seq di topo di questo studio con due gruppi di condizioni: wild-type (WT) e Muscleblind-like type 1 knockout (Mbnl1 KO) con tre repliche ciascuno. Per dimostrare l'analisi differenziale dell'utilizzo del sito di poliadenilazione, abbiamo ottenuto dati PolyA-seq di fibroblasti embrionali di topo (MEF) (GEO Accession GSE60487)16. I dati hanno quattro gruppi di condizioni: Wild-type (WT), Muscleblind-like type1/type 2 double knockout (Mbnl1/2 DKO), Mbnl 1/2 DKO con Mbnl3 knockdown (KD) e Mbnl1/2 DKO con controllo Mbnl3 (Ctrl). Ogni gruppo di condizioni è costituito da due repliche.
Adesione GEO | Numero di esecuzione SRA | Nome del campione | Condizione | Replicare | Fazzoletto | Sequenziamento | Lunghezza di lettura | |
RNA-Seq | GSM4116218 | SRR10261601 | Mbnl1KO_Thymus_1 | Mbnl1 knockout | Rappresentante 1 | Timo | Estremità accoppiata | 100 pb |
GSM4116219 | SRR10261602 | Mbnl1KO_Thymus_2 | Mbnl1 knockout | Rappresentante 2 | Timo | Estremità accoppiata | 100 pb | |
GSM4116220 | SRR10261603 | Mbnl1KO_Thymus_3 | Mbnl1 knockout | Rappresentante 3 | Timo | Estremità accoppiata | 100 pb | |
GSM4116221 | SRR10261604 | WT_Thymus_1 | Tipo selvaggio | Rappresentante 1 | Timo | Estremità accoppiata | 100 pb | |
GSM4116222 | SRR10261605 | WT_Thymus_2 | Tipo selvaggio | Rappresentante 2 | Timo | Estremità accoppiata | 100 pb | |
GSM4116223 | SRR10261606 | WT_Thymus_3 | Tipo selvaggio | Rappresentante 3 | Timo | Estremità accoppiata | 100 pb | |
3P-Seq | GSM1480973 | SRR1553129 | WT_1 | Tipo selvatico (WT) | Rappresentante 1 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb |
GSM1480974 | SRR1553130 | WT_2 | Tipo selvatico (WT) | Rappresentante 2 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb | |
GSM1480975 | SRR1553131 | DKO_1 | Mbnl 1/2 doppio knockout (DKO) | Rappresentante 1 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb | |
GSM1480976 | SRR1553132 | DKO_2 | Mbnl 1/2 doppio knockout (DKO) | Rappresentante 2 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb | |
GSM1480977 | SRR1553133 | DKOsiRNA_1 | Mbnl 1/2 doppio knockout con Mbnl 3 siRNA (KD) | Rappresentante 1 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb | |
GSM1480978 | SRR1553134 | DKOsiRNA_2 | Mbnl 1/2 doppio knockout con Mbnl 3 siRNA (KD) | Rappresentante 2 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 36 pb | |
GSM1480979 | SRR1553135 | DKONTsiRNA_1 | Mbnl 1/2 doppio knockout con siRNA non mirato (Ctrl) | Rappresentante 1 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb | |
GSM1480980 | SRR1553136 | DKONTsiRNA_2 | Mbnl 1/2 doppio knockout con siRNA non mirato (Ctrl) | Rappresentante 2 | Fibroblasti embrionali di topo (MEF) | Estremità singola | 40 pb |
Tabella 1. Riepilogo dei set di dati RNA-Seq e PolyA-seq utilizzati per l'analisi.
1. Installazione di strumenti e pacchetti R utilizzati nell'analisi
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. Analisi di splicing alternativo (AS) mediante RNA-seq
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. Analisi di poliadenilazione alternativa (APA) mediante sequenziamento finale 3'
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")
Dopo aver eseguito il flusso di lavoro dettagliato di cui sopra, i risultati dell'analisi AS e APA e i risultati rappresentativi sono sotto forma di tabelle e grafici di dati, generati come segue.
COME:
Il principale risultato dell'analisi AS (Tabella supplementare 1 per diffSplice; La tabella 2 per DEXSeq) è un elenco di esoni che mostrano un uso differenziale tra le condizioni e un elenco di geni che mostrano una significativa attività ...
In questo studio, abbiamo valutato approcci basati su esoni e basati su eventi per rilevare AS e APA in massa RNA-Seq e 3' dati di sequenziamento finale. Gli approcci AS basati sugli esoni producono sia un elenco di esoni differenzialmente espressi sia una classificazione a livello genico ordinata in base alla significatività statistica dell'attività complessiva di splicing differenziale a livello genetico (Tabelle 1-2, 4-5). Per il pacchetto diffSplice, l'uso differenziale è determinato adattando mod...
Gli autori non hanno nulla da rivelare.
Questo studio è stato supportato da una Future Fellowship dell'Australian Research Council (ARC) (FT16010043) e da ANU Futures Scheme.
Name | Company | Catalog Number | Comments |
Not relevent for computational study |
Richiedi autorizzazione per utilizzare il testo o le figure di questo articolo JoVE
Richiedi AutorizzazioneEsplora altri articoli
This article has been published
Video Coming Soon