Dapars2 分析可变多聚腺苷酸化(APA 3’UTR)与肿瘤

越来越懒了,不想写记录呀!算了,强迫自己一把!

水平有限,若有错误,恳请指出!

信使RNA ( messenger RNA, mRNA)加工过程中的精细调控对基因的表达具有重要影响,是产生基因功能多样性的重要机制。在前体mRNA成熟过程中,环境的细微变化能够导致在mRNA的不同剪接位点上进行选择性的剪接和多聚腺苷酸化,此过程被称为可选择性多聚腺苷酸化(alerna"tive polyadenylation , APA)。可变多聚腺苷酸化(alternative polyadenylation, APA)是真核细胞mRNA成熟过程中针对前体mRNA 3′端的一种加工修饰方式,是重要的转录后调控机制

近年来,APA作为调控基因表达的重要方式越来越受到重视。APA现象广泛存在于真核生物中,绝大多数真核基因具有多个多聚腺苷酸[poly( A)]位点。例如,人类有70% ~75%的基因存在APA事件,果蝇1、蠕虫和斑马鱼[3也有约半数的基因存在这类现象。APA能产生长短不同的mRNA转录本,不同的mRNA转录本具有不同的稳定性、翻译能力和表达水平,从而产生多样化的生物学功能。

 APA的形成过程APA形成过程包括poly (A)位点的选择和多聚腺苷酸化,这两个过程十分重要并受到多种因素的调控。选择不同的多聚腺苷酸化信号是形成APA的关键。

经典的poly (A)模体是AAUAAA,其他非经典的poly (A)模体变体包括. AUUAAA, AAGAAA和UAUAAA等。在人类基因组中,AAUAAA约占所有多聚腺苷酸化模体的50%,AUUAAA约占16%、A[A/U]UAAA中约20%存在单核苷酸变异,只有约10%的多聚腺苷酸化模体没有类似于AAUAAA的识别区域5mRNA的多聚腺苷酸化包含2个必要步骤:1前体mRNA在poly(A)位点进行剪接;2在3'端加poly (A)尾。

多聚腺苷酸化的主要功能是保证转录本的高效输出、翻译以及稳定。多聚腺苷酸化的顺利形成是前体mRNA序列中的顺式作用元件、反式作用因子以及细胞核中多种酶和蛋白因子相互作用的结果。

选择性多聚腺苷酸化(APA)是一种重要的前体RNA加工机制,广泛存在于所有真核生物中。通过在RNA 3′UTR不同位置上添加polyA尾巴,可以选择性地调节3′UTR的长短。由于3′UTR含有多种顺式调控元件,例如:miRNA或RNA结合蛋白(RBP)结合位点,因此,APA可以通过调控 3′非翻译区(3′UTR) 的长度,影响目标mRNA的稳定性和翻译效率以及翻译后蛋白质的细胞定位,进而精细调节基因表达,对一系列细胞过程(如增殖、分化和肿瘤发生)产生根本性的影响。

.APA通过调节3′UTR长度调控基因表达。

内含子多聚腺苷酸化(intronic polyadenylation, IPA)通过形成丢失重要结构域的截短型蛋白实现对靶基因的调控,参与形成肿瘤新抗原。APA具有肿瘤特异性,有可能用于肿瘤分子分型和靶向治疗。

可变多聚腺苷酸化Alternative Polyadenylation (APA),如下图所示(图片来自参考),在不同的APA信号位点切割,然后添加polyA。这种调控机制属于转录后调控,可能会影响蛋白的序列(发生在编码区),也可能影响蛋白的稳定性(比如非编码区内的miRNA的调控区域)。其实也是可变剪接的一种情况。

一般APA可以分为四种类型:

1 、3’UTR APA:发生在末端外显子内,产生具有不同长度3’UTR的转录本,不影响蛋白编码功能,是最常见的APA形式;

2、 可变末端外显子APA:这种APA产生了末端外显子不同的转录本,影响蛋白编码功能;

3 、内含子APA:发生于在内含子区,延长了某个内部外显子并使之成为末端外显子;

4、 内部外显子APA:在编码区域内部发生剪切和多聚腺苷酸化。

常用的软件是Dapars,这个软件现在也有了升级的版本Dapars2。参考:

https://github.com/ZhengXia/dapars

https://github.com/3UTR/DaPars2

分析流程很相似,Dapars2多了 normalize library sizes 。

安装软件

官网:https://github.com/3UTR/DaPars2

source activate dapars2   # 需要python2.7的环境!

cd  /data/APA_DaPars2   # 分析路径

step1 :这一步有两个文件需要从UCSC下载:whole_gene.bed,  id_from_UCSC.txt。

1、下载:hg38_refseq_whole_gene.bed

genome: Human

assembly:hg38

group: Genes and Gene Predictions

track: NCBI_REfSeq

table: refGene All

region: genome

output format: BED - browser extensible data

output file: hg38_refseq_whole_gene.bed

点‘get output’ button,下一页点‘Output refGene as BED’ 再点 ‘get output’ button.

2、下载:*hg38_Refseq_id_from_UCSC.txt

genome: Human

assembly: hg38

group: Genes and Gene Predictions

track: NCBI REfSeq

table: refGene  All

region: genome

output format: selected fields from primary and related tables

output file: hg38_Refseq_id_from_UCSC.txt

点 ‘get output’ button,下一个界面选择:

name: Name of gene (usually transcript_id from GTF)

name2: Alternate name (e.g. gene_id from GTF)

点 ‘get output’ 保存文件

head  hg38_refseq_whole_gene.bed      hg38_Refseq_id_from_UCSC.tx

DaPars_Extract_Anno.py  脚本 构建注释

python DaPars_Extract_Anno.py -b hg38_refseq_whole_gene.bed  -s  hg38_Refseq_id_from_UCSC.txt  -o hg38_refseq_extracted_3UTR.bed


构建好的  hg38_refseq_extracted_3UTR.bed

##### step2 生成 bedgraph

bedtools genomecov -ibam  test.sorted.bam  -bga -split -trackline  >  test.sorted.bam.out.wig

### 去掉wig的第一行,并加上chr 

ls *wig | while read a;do sed -r -i -e '1d' -e 's/^(.?.\t)/chr\1/' $a;done &

head  test.sorted.bam.out.wig

 test.sorted.bam.out.wig

### 看下共有哪些染色体及覆盖度

cut -f1 test.sorted.bam.out.wig  | uniq  -c

挑选出需要的chr染色体

ls *wig | while read a ; do grep "chr" $a > ../wig/$a ; done &


 step3 生成 mapping_bam_location_with_depth.txt, 拿来做测序深度归一化

## 我用 samtools   flagstat 统计bam 文件 的 mapping reads,all.samtools_flagstat_result.xls

cat all.samtools_flagstat_result.xls

samtools  flagstat 统计的 mapping reads

## cut  出    mapping reads, 第四部的 configure文件需要,   需和wig文件名、顺序一致。

cut -f1,6 all.samtools_flagstat_result.xls |sed 's#(.*##g' | sed  's#R#R.sorted.bam.out.wig#'  > all.samtools_flagstat.mapped.txt

head     all.samtools_flagstat.mapped.txt

sequencing_depth_file,校正测序深度用

step4  写configure_file

###  列出wig文件,以逗号分割。批量操作,不想手打, 粘贴在下面的 configure文件里

cut -f1 all.samtools_flagstat.mapped.txt | sed 's#^#./wig/#g'| paste -s -d ","

# 写configure_file

官网的configure_file

cat DaPars2_test_data_configure.txt

Annotated_3UTR= hg38_refseq_extracted_3UTR.bed

Aligned_Wig_files= sample1.wig, sample2.wig #以逗号分割 ,列出wig文件

Output_directory= result_DaPars2_data/

Output_result_file= result_DaPars2_data

sequencing_depth_file= all.samtools_flagstat.mapped.txt

Coverage_threshold=10

Num_threads=30  ## 30个线程

# 运行  DaPars2.sh

python   DaPars2_Multi_Sample_Multi_Chr.py  DaPars2_test_data_configure.txt

### 如果要单独分析每个染色体以节省时间和内存请运行以下命令,可以每条染色体写个脚本,同时提交,同时运行,节省时间和内存 !

python    Dapars2_Multi_Sample.py  DaPars2_test_data_configure.txt    chr3

生成结果目录

## 看 看chr3

head  result_DaPars2_Test_data_chr3/*txt

chr3/

Predicted_Proximal_APA' : 表示预测的近端 Poly(A) 位点,'Loci' 表示转录本的 3'UTR 区域,其他列代表每个样本的 PDUI 值。

再把所有chr 染色体合并到一个文件  all.chr.DaPars2.txt 里。

head  all.chr.DaPars2.txt

合并 的 all.chr.DaPars2.txt

我有个问题呀,如果我想将 实验组 与 对照组 进行差异分析呢? 需要怎么实现?我在DaPars2 更新后的版本里,我没有看到这种用法呢?在上一步的configure_file里, 我是将 N 和 T 的wig放在一组运行的。 但怎么做肿瘤组和正常组的差异APA分析吗?   再研究研究~~

后续来了: 我去给DaPars2作者留言了,作者的回复是: DaPars2不能做差异分析,还是建议用以前的DaPars~~~~, 好吧,下面重头开始运行DaPars!


以下是 运行第一版的 DaPars记录

https://github.com/ZhengXia/dapars

安装第一版的 DaPars,需 注意 pip install rpy2==2.8.6

第一版的 DaPars版本 的 config 文件: DaPars_configure

Annotated_3UTR= hg38_refseq_extracted_3UTR.bed

Group1_aligned_Wig= T1.wig,T2.wig,T3wig,T4.wig

Group2_aligned_Wig=N1.wig, N2.wig, N3wig, N4.wig

Num_least_in_group1=1

Num_least_in_group2=1

Coverage_cutoff=30 

FDR_cutoff=0.05 

PDUI_cutoff=0.4 

Fold_change_cutoff=0.59

运行脚本DaPars_main.py

python       /data/sorftware/dapars-master/src/DaPars_main.py     DaPars_configure

运行 DaPars_main.py 后的结果:

运行DaPars_main.py 后的结果

在R中,我们取出第一列gene,以及后5列的结果:

library(dplyr)

a = read.table("test.new_DaPars_Test_data_All_Prediction_Results.txt", header=T, row.names= 1, sep="\t", quote="")

dim(a) ; head(a[, (ncol(a)-5): ncol(a)])

b =   a[, (ncol(a)-5) :ncol(a)]

b =   b[,c(1,2,3,5)];head(b)

b =  b %>% dplyr::rename("TumorMeanPDUI"="Group_A_Mean_PDUI", "NormalMeanPDUI" = "Group_B_Mean_PDUI");head(b)

write.table(b, "PDUI-Pval.txt",sep="\t", quote=F)

system(paste("sed -i '1 s/^/Gene\t/'", "PDUI-Pval.txt"))

system("less -S  PDUI-Pval.txt | sed -e '1s/^Gene\t/gene_id\tgene_name\tchr\tstrand\t/' -e 's/|/\t/g' | cut -f1,2,5,6,7,8  > new.PDUI-Pval.txt")

处理后,拿来画图的new.PDUI-Pval.txt:

处理后,拿来画图new.PDUI-Pval.txt

R画图:

PDUIPVal  <-  read.table("new.PDUI-Pval.txt",row.names=1,header=T)

head(PDUIPVal)

## 1、以0.05位阈值挑出差异APA的基因,

PDUIPVal[which(abs(PDUIPVal[,4]) <=0.05),'DEG0.05'] <- 'no diff' 

PDUIPVal[which((abs(PDUIPVal[,4])>=0.05)&(PDUIPVal[,3]>PDUIPVal[,2])),'DEG0.05'] <- 'Shortened(0.05)'

PDUIPVal[which((abs(PDUIPVal[,4])>=0.05)&(PDUIPVal[,3]<PDUIPVal[,2])),'DEG0.05'] <- 'Lengthened(0.05)'

table(PDUIPVal$DEG0.05)

## 2、或者要求更严格,以0.1位阈值挑出差异APA的基因,

PDUIPVal[which(abs(PDUIPVal[,4]) <=0.1),'DEG0.1'] <- 'no diff'

PDUIPVal[which((abs(PDUIPVal[,4])>=0.1)&(PDUIPVal[,3]>PDUIPVal[,2])),'DEG0.1'] <- 'Shortened(0.1)'

PDUIPVal[which((abs(PDUIPVal[,4])>=0.1)&(PDUIPVal[,3]<PDUIPVal[,2])),'DEG0.1'] <- 'Lengthened(0.1)'

table(PDUIPVal$DEG0.1)

head(PDUIPVal)

write.table(PDUIPVal, "new.PDUI-Pval.txt", row.names=T, col.names=T, sep="\t",quote=F)

system(paste("sed -i '1 s/^/gene_id\t/'", "new.PDUI-Pval.txt"))

PDUIPVal <- read.table("new.PDUI-Pval.txt",row.names=1,header=T,sep="\t",quote="")

head(PDUIPVal);table(PDUIPVal$DEG0.05);table(PDUIPVal$DEG0.1)

## Figure 1 notes,以0.05为 阈值

pdf("fig1-pduipaad.pdf",width=13,height=5.7)

  par(mfrow=c(1,2))

  par(cex.lab=1.3,cex.axis=1.5)

  par(mar=c(5,5,3,3))

  col0<-rep("#00000022",nrow(PDUIPVal))

  col0[(abs(PDUIPVal[,4])>= 0.05)&(PDUIPVal[,3]>PDUIPVal[,2])] <- "#FF000090" #红色

  col0[(abs(PDUIPVal[,4])>= 0.05)&(PDUIPVal[,3]<PDUIPVal[,2])]<- "#0000FF90" #蓝色

  pch0<-rep(21,nrow(PDUIPVal))

  par(pty="s")

    plot(PDUIPVal[,3:2],bg=col0,pch=pch0,col=NA,cex=1.5,axes=FALSE,xlab="",ylab="")

    title(xlab="PDUI Normal",ylab="PDUI Tumor",line= 2.3,cex.lab= 1.3)

    title(main="",line= 0.5)

    box();axis(1,at=c(0,.5,1));axis(2,at=c(0,.5,1))

    legend("topleft", c("Lengthened", "Shortened"), pt.bg=c("#0000FF90","#FF000090"), pch=c(21,21), cex=1)

    abline(c(.05,1),lty=2,lwd=2)

    abline(c(-.05,1),lty=2,lwd=2)

  par(pty="m")

    plot((PDUIPVal[,4]),-log10(PDUIPVal[,5]),xlim=c(-.6,.6),ylim=c(0,100), xlab="",ylab="",col=NA,pch=pch0,bg=col0,cex=1.5)

    title(xlab="Change in PDUI (Tumor-Normal)",ylab="p-value (BH, -log10)",line= 2.3,cex.lab= 1.3)

    abline(v=0.05*c(-1,1),lty=2,lwd=2)

    ######################### #cutoff at 0.1改这里#abline(v=0.1*c(-1,1),lty=2,lwd=2)

    axis(3,at=c(.55),line=-0.5,label=c("Lengthened"),hadj=1,tick=FALSE)

    axis(3,at=c(-.55),line=-0.5, label=c("Shortened"),hadj=0,tick=FALSE)

dev.off()

看下图:

ΔPDUI  =   Mean PDUI T -  Mean PDUI N

肿瘤和正常样本中每个基因的 PDUI 评分图。虚线代表 ΔPDU= 0.05 截止值。蓝点代表3'-UTR 延长的基因,红点代表 3'-UTR 缩短的基因。

 火山图表示3'-UTR-缩短(红色)和-延长(蓝色)基因(FDR < 0.05),其 |ΔPDUI| > 0.05。ΔPDUI ( ΔPDUI =Mean PDUI T - Mean PDUI N)。 |ΔPDUI| > 0.05  作为肿瘤相关3‘-UTR 缩短或延长的量度(可以更严格一点的话,|ΔPDUI|  > 0.1,但得到的差异基因就更少更少了)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容