Zum Anzeigen dieser Inhalte ist ein JoVE-Abonnement erforderlich. Melden Sie sich an oder starten Sie Ihre kostenlose Testversion.
Method Article
Alternative Spleißen (AS) und alternative Polyadenylierung (APA) erweitern die Vielfalt der Transkriptisoformen und ihrer Produkte. Hier beschreiben wir bioinformatische Protokolle zur Analyse von Bulk-RNA-seq und 3'-Endsequenzierungsassays, um AS und APA zu erkennen und zu visualisieren, die unter experimentellen Bedingungen variieren.
Neben der typischen Analyse von RNA-Seq zur Messung der differentiellen Genexpression (DGE) unter experimentellen/biologischen Bedingungen können RNA-seq-Daten auch verwendet werden, um andere komplexe regulatorische Mechanismen auf Exon-Ebene zu erforschen. Alternative Spleißung und Polyadenylierung spielen eine entscheidende Rolle für die funktionelle Vielfalt eines Gens, indem sie verschiedene Isoformen erzeugen, um die Genexpression auf posttranskriptioneller Ebene zu regulieren, und die Beschränkung der Analysen auf die gesamte Genebene kann diese wichtige regulatorische Schicht übersehen. Hier demonstrieren wir detaillierte Schritt-für-Schritt-Analysen zur Identifizierung und Visualisierung der differentiellen Exon- und Polyadenylierungsstellennutzung über Bedingungen hinweg, wobei Bioconductor und andere Pakete und Funktionen wie DEXSeq, diffSplice aus dem Limma-Paket und rMATES verwendet werden.
RNA-seq wurde im Laufe der Jahre häufig verwendet, typischerweise zur Schätzung der differentiellen Genexpression und Genentdeckung1. Darüber hinaus kann es auch verwendet werden, um die unterschiedliche Nutzung auf Exon-Ebene aufgrund der Genexprimierung verschiedener Isoformen abzuschätzen, was zu einem besseren Verständnis der Genregulation auf posttranskriptioneller Ebene beiträgt. Die Mehrheit der eukaryotischen Gene erzeugt verschiedene Isoformen durch alternatives Spleißen (AS), um die Vielfalt der mRNA-Expression zu erhöhen. AS-Ereignisse können in verschiedene Muster unterteilt werden: Überspringen vollständiger Exons (SE), bei denen ein ("Kassetten") Exon zusammen mit seinen flankierenden Introns vollständig aus dem Transkript entfernt wird; alternative (Donor) 5'-Spleißstellenauswahl (A5SS) und alternative 3' (Akzeptor) Spleißstellenauswahl (A3SS), wenn zwei oder mehr Spleißstellen an beiden Enden eines Exons vorhanden sind; Beibehaltung von Introns (RI), wenn ein Intron innerhalb des reifen mRNA-Transkripts beibehalten wird, und gegenseitiger Ausschluss der Exon-Nutzung (MXE), wobei nur eines der beiden verfügbaren Exons gleichzeitig beibehalten werden kann 2,3. Die alternative Polyadenylierung (APA) spielt auch eine wichtige Rolle bei der Regulierung der Genexpression unter Verwendung alternativer Poly(A)-Stellen, um mehrere mRNA-Isoformen aus einem einzigen Transkriptzu erzeugen 4. Die meisten Polyadenylierungsstellen (pAs) befinden sich in der 3' untranslatierten Region (3' UTRs) und erzeugen mRNA-Isoformen mit unterschiedlichen 3' UTR-Längen. Da die 3' UTR die zentrale Drehscheibe für die Erkennung regulatorischer Elemente ist, können unterschiedliche 3' UTR-Längen die mRNA-Lokalisierung, Stabilität und Translation beeinflussen5. Es gibt eine Klasse von 3'-Endsequenzierungsassays, die für den Nachweis von APA optimiert sind und sich in den Details des Protokolls6 unterscheiden. Die hier beschriebene Pipeline ist für PolyA-seq ausgelegt, kann aber wie beschrieben für andere Protokolle angepasst werden.
In dieser Studie stellen wir eine Pipeline von differentiellen Exon-Analysemethoden7,8 (Abbildung 1) vor, die in zwei große Kategorien unterteilt werden können: exon-basiert (DEXSeq9, diffSplice 10) und ereignisbasiert (replicate Multivariate Analysis of Transcript Splicing (rMATS)11). Die Exon-basierten Methoden vergleichen die Faltenänderung über die Bedingungen einzelner Exons hinweg mit einem Maß für die gesamte Genfaltenänderung, um differentiell exprimierte Exon-Nutzung zu nennen, und berechnen daraus ein Maß für die AS-Aktivität auf Genebene. Ereignisbasierte Methoden verwenden Exon-Intron-Spanning-Junction-Lesevorgänge, um bestimmte Spleißereignisse wie Exon-Skipping oder Beibehaltung von Introns zu erkennen und zu klassifizieren und diese AS-Typen in Ausgabe3 zu unterscheiden. Somit bieten diese Methoden komplementäre Sichtweisen für eine vollständige Analyse von AS12,13. Wir haben DEXSeq (basierend auf dem DESeq214 DGE-Paket) und diffSplice (basierend auf dem Limma10 DGE-Paket) für die Studie ausgewählt, da sie zu den am häufigsten verwendeten Paketen für die differentielle Spleißanalyse gehören. rMATS wurde als beliebte Methode für die ereignisbasierte Analyse ausgewählt. Eine weitere beliebte ereignisbasierte Methode ist MISO (Mixture of Isoforms)1. Für APA adaptieren wir den Exon-basierten Ansatz.
Abbildung 1. Analyse-Pipeline. Flussdiagramm der in der Analyse verwendeten Schritte. Zu den Schritten gehören: Abrufen der Daten, Durchführen von Qualitätsprüfungen und Leseausrichtung, gefolgt von Zählen von Lesevorgängen unter Verwendung von Anmerkungen für bekannte Exons, Introns und pA-Stellen, Filtern zur Entfernung niedriger Zählungen und Normalisierung. PolyA-seq-Daten wurden für alternative pA-Stellen mit diffSplice/DEXSeq-Methoden analysiert, Bulk-RNA-Seq wurde auf alternative Spleißung auf Exon-Ebene mit diffSplice/DEXseq-Methoden analysiert und AS-Ereignisse mit rMATS analysiert. Bitte klicken Sie hier, um eine größere Version dieser Abbildung zu sehen.
Die in dieser Umfrage verwendeten RNA-seq-Daten stammen von Gene Expression Omnibus (GEO) (GSE138691)15. Wir verwendeten Maus-RNA-seq-Daten aus dieser Studie mit zwei Bedingungsgruppen: Wildtyp (WT) und Muskelblind-ähnlicher Typ-1-Knockout (Mbnl1 KO) mit jeweils drei Replikaten. Um die Analyse der differentiellen Polyadenylierungsstandortnutzung zu demonstrieren, erhielten wir PolyA-seq-Daten von Mausembryo-Fibroblasten (MEFs) (GEO Accession GSE60487)16. Die Daten haben vier Bedingungsgruppen: Wild-Typ (WT), Muskelblind-Typ 1/Typ 2 Doppel-Knockout (Mbnl1/2 DKO), Mbnl 1/2 DKO mit Mbnl3-Knockdown (KD) und Mbnl1/2 DKO mit Mbnl3-Kontrolle (Strg). Jede Bedingungsgruppe besteht aus zwei Replikaten.
GEO-Beitritt | SRA-Ausführungsnummer | Name des Beispiels | Zustand | Replizieren | Gewebe | Sequenzierung | Leselänge | |
RNA-Seq | GSM4116218 | SRR10261601 | Mbnl1KO_Thymus_1 | Mbnl1 Knockout | Wiederholung 1 | Thymus | Gepaartes Ende | 100 bp |
GSM4116219 | SRR10261602 | Mbnl1KO_Thymus_2 | Mbnl1 Knockout | Wiederholung 2 | Thymus | Gepaartes Ende | 100 bp | |
GSM4116220 | SRR10261603 | Mbnl1KO_Thymus_3 | Mbnl1 Knockout | Wiederholung 3 | Thymus | Gepaartes Ende | 100 bp | |
GSM4116221 | SRR10261604 | WT_Thymus_1 | Wildtyp | Wiederholung 1 | Thymus | Gepaartes Ende | 100 bp | |
GSM4116222 | SRR10261605 | WT_Thymus_2 | Wildtyp | Wiederholung 2 | Thymus | Gepaartes Ende | 100 bp | |
GSM4116223 | SRR10261606 | WT_Thymus_3 | Wildtyp | Wiederholung 3 | Thymus | Gepaartes Ende | 100 bp | |
3P-Seq | GSM1480973 | SRR1553129 | WT_1 | Wildtyp (WT) | Wiederholung 1 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp |
GSM1480974 | SRR1553130 | WT_2 | Wildtyp (WT) | Wiederholung 2 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp | |
GSM1480975 | SRR1553131 | DKO_1 | Mbnl 1/2 Doppel-Knockout (DKO) | Wiederholung 1 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp | |
GSM1480976 | SRR1553132 | DKO_2 | Mbnl 1/2 Doppel-Knockout (DKO) | Wiederholung 2 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp | |
GSM1480977 | SRR1553133 | DKOsiRNA_1 | Mbnl 1/2 Doppel-Knockout mit Mbnl 3 siRNA (KD) | Wiederholung 1 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp | |
GSM1480978 | SRR1553134 | DKOsiRNA_2 | Mbnl 1/2 Doppel-Knockout mit Mbnl 3 siRNA (KD) | Wiederholung 2 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 36 bp | |
GSM1480979 | SRR1553135 | DKONTsiRNA_1 | Mbnl 1/2 Doppel-Knockout mit nicht-targetender siRNA (Ctrl) | Wiederholung 1 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp | |
GSM1480980 | SRR1553136 | DKONTsiRNA_2 | Mbnl 1/2 Doppel-Knockout mit nicht-targetender siRNA (Ctrl) | Wiederholung 2 | Embryonale Fibroblasten (MEFs) der Maus | Single-End | 40 bp |
Tabelle 1. Zusammenfassung der RNA-Seq- und PolyA-seq-Datensätze, die für die Analyse verwendet wurden.
1. Installation von Tools und R-Paketen, die in der Analyse verwendet werden
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. Alternative Spleißanalyse (AS) mittels 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. Alternative Polyadenylierung (APA) Analyse mittels 3'-Endsequenzierung
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")
Nach dem Ausführen des obigen Schritt-für-Schritt-Workflows werden die AS- und APA-Analyseausgaben und repräsentativen Ergebnisse in Form von Tabellen und Datendiagrammen erstellt, die wie folgt generiert werden.
WIE:
Die Hauptergebnisse der AS-Analyse (Zusatztabelle 1 für diffSplice; Tabelle 2 für DEXSeq) ist eine Liste von Exons, die eine unterschiedliche Nutzung über Bedingungen hinweg zeigen, und eine Liste von Genen, die eine sig...
In dieser Studie evaluierten wir Exon-basierte und ereignisbasierte Ansätze zum Nachweis von AS und APA in Bulk-RNA-Seq- und 3'-Endsequenzierungsdaten. Die Exon-basierten AS-Ansätze erzeugen sowohl eine Liste differentiell exprimierter Exons als auch ein Ranking auf Genebene, geordnet nach der statistischen Signifikanz der gesamten differentiellen Spleißaktivität auf Genebene (Tabellen 1-2, 4-5). Für das diffSplice-Paket wird die differentielle Nutzung bestimmt, indem gewichtete lineare Modelle auf ...
Die Autoren haben nichts offenzulegen.
Diese Studie wurde von einem Australian Research Council (ARC) Future Fellowship (FT16010043) und ANU Futures Scheme unterstützt.
Name | Company | Catalog Number | Comments |
Not relevent for computational study |
Genehmigung beantragen, um den Text oder die Abbildungen dieses JoVE-Artikels zu verwenden
Genehmigung beantragenThis article has been published
Video Coming Soon
Copyright © 2025 MyJoVE Corporation. Alle Rechte vorbehalten