AS统计

统计PB支持的AS

提取那些有PacBio支持的AS事件,并且去除了Scaffold,提取剪切事件所发生的转录本;

并且将那些剪切位置相差几个bp的AS合并了

### 对于IR事件发生在有重叠的坐标区域时,把对应的区域进行合并
python arrangeAS.py  -AS  ~/work/Alternative/result/Gr_result/CO41_42_result/11_AS/end_splice.txt -r ~/work/Alternative/data/Gr_genome/Graimondii_221_v2.1.gene.gtf -p ~/work/Alternative/result/Gr_result/CO41_42_result/07_annotation/merge.gtf -o D5_AS.txt

统计AS的种类和数目

事件数目

基因组

IR

ES

AltA

AltD

AltP

Other

A2

21575

2352

5847

4472

4394

4269

D5

18345

2229

5350

3845

4185

6302

TM1

32838

3723

9749

8252

7358

7915

At

16123

1850

4878

4011

3621

3882

Dt

16715

1873

4871

4241

3737

4033

基因数目

基因组

IR

ES

AltA

AltD

AltP

Other

A2

9138

1499

3147

2614

2200

1881

D5

7463

1443

2900

2295

2214

2285

TM1

13573

2399

5414

4740

3780

3308

At

6656

1210

2709

2345

1872

1672

Dt

6917

1189

2705

2395

1908

1636

IR和其他AS的关系

出现IR的地方同时也似乎容易出现AltA、AltD等情况,分析先有IR还是先有AltA、AltD;

获取剪切事件所在的基因组坐标而不是内含子坐标

提取既有IR又有AltA、AltD的基因出来;分析AltA与IR之间是否有着某种联系

## 获取剪切事件的基因组坐标
python findASposition.py
##分析IR与其他剪切事件的坐标之间的位置
#111 剪切事件在基因组的位置
#22 AltA与IR间的距离
#33 同时出现IR与AltA、AtlD的基因
python IR_AltA.py  -AS 111  -o 22 -sim 33 
##统计多少AltA与AltD与IR相距小于10bp
grep "AltA" 22|awk '{print $1"-"$5"-"$6}'|sort |uniq |wc -l
grep "AltD" 22|awk '{print $1"-"$5"-"$6}'|sort |uniq |wc -l
grep "AltA" 22 |awk '{a[$1"-"$5"-"$6]=0;if($7<=2){a[$1"-"$5"-"$6]+=1}}END{for(i in a){if(a[i]>0){print i}}}'|wc -l
grep "AltD" 22 |awk '{a[$1"-"$5"-"$6]=0;if($7<=2){a[$1"-"$5"-"$6]+=1}}END{for(i in a){if(a[i]>0){print i}}}'|wc -l

在存同时存在IR与AltA、AltD事件时;AltA、AltD与IR之间间隔小于2bp碱基

将近有27%左右的AltA、AltD与IR的事件的坐标是相差一个碱基的差异

基因组

AltA

AltD

TM1

1015/3675

909/3385

A2

493/2032

538/1876

D5

527/1840

508/1638

鉴定保守的AS

## 统计同源基因间同时存在AS基因数和事件数目
for i in ExonS IntronR AltA AltD; do python ~/scripte/Alternative/module/homologASeventCount.py -homolog ~/work/Alternative/result/homologo/homologGene/A2_vs_At_collinearity.txt  -AS1 ../../conserveAS/allAS/A2_AS.txt -AS2 ../../conserveAS/allAS/TM1_AS.txt -T ${i} -o ${i}; tmp=`mktemp`done; sort ${i}|uniq >${tmp}; mv ${tmp} ${i}; done
awk '$2!=0&&$4!=0{print $0}' IntronR|awk '{a+=$2;b+=$4}END{print a,b,NR}'
##统计保守的基因数
cut -f1 -d"-" IR.txt_end |sort|uniq|wc -l

保守的IR

基因组

存在IR基因

保守基因

保守事件

基因组1

基因组2

A2 At

3570

2268

3827

9735

9580

D5 Dt

3295

1901

2956

9142

8828

A2 D5

3609

2033

3188

9652

9708

At Dt

2911

1734

2737

7944

7871

保守的ES

基因组

存在IR基因

保守基因

保守事件

基因组1

基因组2

A2 At

299

189

200

576

543

D5 Dt

285

163

186

569

573

A2 D5

262

128

138

492

481

At Dt

250

141

151

474

478

保守的AltA

基因组

存在IR基因

保守基因

保守事件

基因组1

基因组2

A2 At

891

462

523

2030

1960

D5 Dt

835

413

473

1919

1791

A2 D5

765

349

389

1704

1746

At Dt

820

395

448

1792

1836

保守的AltD

基因组

存在IR基因

保守基因

保守事件

基因组1

基因组2

A2 At

659

348

385

1380

1358

D5 Dt

640

312

353

1344

1432

A2 D5

544

224

247

1055

1020

At Dt

662

344

396

1414

1456

uniq IR在另外一个基因组的坐标

这个uniq的IR在另外一个基因存在三种情况:

  • 在另外一个基因组是intron,持续被剪切的状态

  • 在另外一个基因组变成exon,已经进化成exon了

##得到uniq的AS
awk '$3~/IntronR/{print $2,$1,$4,$5}' OFS="-" ../../allAS/A2_AS.txt >A2_all_IR.txt
##取uniq
cut -f1 ../IR.txt_end |cat - A2_all_IR.txt|sed 's/-[-+]//g'|sort |uniq -u

提取基因的固定长度的k-mer序列,使用bwa进行比对,获得uniq IR在另外一个基因组上的坐标;考虑到发生uniq IR的内含子在两个基因组中的长度可能会不一样,同时结合两端FEST序列进行一次锚定

## 取出基因组中两个注释文件的所有的Intron坐标,去冗余
python mergeRefPacBioIntron.py  -p ~/work/Alternative/result/Gh_result/CO31_32_result/07_annotation/merge.gtf  -r ~/work/Alternative/data/Ghirsutum_genome_HAU_v1.0/Ghirsutum_gene_model.gtf  -o 11
## 去冗余和去除scaffold
awk '$4~/Gh/&&$1!~/Sca/{print $0}' 11 |sed 's/\..*//g' |sort -k1,1  -k2,3n|uniq >TM1_AllIntron.txt
## 将IR与对应基因组的所有Intron进行比较,进行wu-Blast

使用k-mer方法进行实验

  • 首先提取与uniq IR一样长的k-mer片段,实验wu-Blast进行比对,筛选必读长度和IR一样的,并且得分最高的

bsub -q smp -n 1 -J D5_A2 -e kmer.err -o kmer.out -R span[hosts=1] "python ../../k-merBWA.py -AS  D5_uniq_IR.txt -gff ~/work/Alternative/data/Ga_genome/G.arboreum.Chr.v1.0.gff  -fa1 ~/work/Alternative/data/Gr_genome/Graimondii_221_v2.0.fa -fa2 ~/work/Alternative/data/Ga_genome/G.arboreum.Chr.v1.0.fasta  -ho ~/work/Alternative/result/homologo/homologGene/A2_vs_D5_collinearity.txt"

先进行的是k-mer方法,之后又使用两端FEST方法;看两种方法的交集怎么样

由于FEST取的是左右300bp,因此假阳性情况会比较多,尽量与k-mer的数据为准

##获取wu-Blast的最优的结果
cat 111|awk '$1~/^evm/&&$2~/^Ghir_A/{print $0}$1~/^Ghir_A/&&$2~/^evm/{print $2,$1,$3}' OFS="\t"|sort |uniq |awk '{print $2,$3,$1}' OFS="\t"|sort  -k3 -k2,2nr|uniq -f2|awk '{print $3"\t"$2"\t"$1}'|sort -k3 -k2,2nr|uniq -f2   >At_uniq_Dt.txt
##统计wu-Blast方法中得到保守,在k-mer中同样保守的数目
cut -f1 At_uniq_Dt.txt |xargs -I {} grep {} ./tmp1594714640/end |wc -l
## 合并两组数据,以k-mer的数据为准
sed '/^$/d' end |awk '{print "B\t"$1"\t"$2}' >../end
awk '{print "A\t"$1"\t"$3}' Dt_uniq_D5.txt |cat - end |sort -k2,2|awk '{print $1"\t"$3"\t"$2}'|uniq -f2|awk '{print $3"\t"$2}' >Dt_uniq_D5_end

将保守的与uniq的合并,统计IR在两个基因组的情况

##合并两次检测的保守IR
cut -f1,3 IR.txt_end|sed 's/-[+-]//g'  >1
cat uniqA2/A2_uniq_At_end  >>1
awk '{print $2"\t"$1}' uniqAt/At_uniq_A2_end >>1
###去个重
sort -k2,2 1|uniq -f1|awk '{print $2"\t"$1}'|sort -k2,2 |uniq -f1|awk '{print $2"\t"$1}' >2
mv 2 1
##统计IR是否发生
python judgeIR.py  -all all_AS.txt  -i A2_At/1 -o A2_At/2

统计这个区域是外显子、或者内含子

把所有的区域计算一下read的覆盖情况

### At区域的read覆盖情况
cut -f2 A2_At/1 |cat - At_Dt/1 |cut -f1|sort |uniq |awk -F "-" '{print $2"\t"$3"\t"$4"\t"$1}' >PIR_AS/At_Position
## 计算覆盖的read数目

将这段区域,与PacBio注释文件、参考基因组注释文件进行比较;判断它是否一直是以外显子的形式、或者一直以内含子的形式进行转录;还有一种复杂的情况是Ohter类

提取参考基因组和PacBio每个转录本的注释信息;将这段区域与转录本的注释信息进行比较;如果与内含子或者exon的交集,达到这个片段的90%以上,就认为这个区域是被注释为内含子或者外显子;如果在一个转录本中被注释为exon,另外一些被注释成intron;则认为发生了IR事件。最后统计在一个基因中所有转录本的情况;如果都满足注释为内含子或者都瞒住注释为外显子,就认为该区域为组成型内含子或组成型外显子

  • 外显子化

  • 内含子化

  • Other

r1 p1对应2号文件的第一列

## 对保守的区域进行注释
python ../annotion_conservePosition.py   -p1 ~/work/Alternative/result/Ga_result/CO11_12_result/07_annotation/merge.gtf  -p2 ~/work/Alternative/result/Gh_result/CO31_32_result/07_annotation/merge.gtf -AS ./2  -o 3333
## 提取每个区域的IR score值
python ../extractPIR.py -all ../all_IR_score.txt  -i 3333  -o 4444
## 统计IR score值的变化
grep 'IR\s+intron' -E 4444 |awk '{a+=$5;b+=$6}END{print a/NR"\t"b/NR}'

统计比例

画一个堆积的条形图:

for i in 1
do
grep 'IR\s+exon' -E 4444 |wc -l
grep 'IR\s+intron' -E 4444 |wc -l
grep 'IR\s+other' -E 4444 |wc -l
grep 'IR\s+IR' -E 4444 |wc -l
grep 'exon\s+IR' -E 4444 |wc -l
grep 'intron\s+IR' -E 4444 |wc -l
grep 'other\s+IR' -E 4444 |wc -l
grep 'IR\s+IR' -E 4444 |wc -l
done

A2 vs At

IR保守率:

基因组

外显子化

内含子化

other

保守

A2发生IR

1091

7650

3602

4221

At发生IR

686

4170

2958

4221

D5 vs Dt

基因组

外显子化

内含子化

other

保守

D5发生IR

774

7342

3278

3875

Dt发生IR

808

4912

4366

3875

A2 vs D5

基因组

外显子化

内含子化

other

保守

A2发生IR

805

6187

4002

3766

D5 发生IR

480

5181

2725

3766

At vs Dt

基因组

外显子化

内含子化

other

保守

At发生IR

730

5486

2616

3234

Dt发生IR

777

5503

2765

3234

,大部分变成了intron,少部分变成exon;四倍体中的IR大部分是由二倍体中的intron转变而来的。

并且在A2中有 1049/16545 的IR发生了外显子化; D5中774/15269 的IR发生外显子化。

计算类型PIR值的变化

  • 外显子化的IR

  • 变成Intron的IR

  • 保持IR不变的IR

可以看出,发生外显子化的IR,它的PIR值很高;而发生intron化的内含子PIR值很低;

由于不同基因组在比较的时候,总read数目存在一个差异,统一将TM1再除以1.35倍

PIR值:比对到intron的read/(intron+两端read)

外显子化的IR、与内含子化的IR在PIR值上的差异;多倍化后外显子化的IR,PIR值显著性的增加

##获取每种类型的PIR值的变化
grep -E "y\s+n" 3333 |grep "other"|cut -f1|awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/A2_PIR.txt >test/5
##看PIR平均值的变化
awk '$5+$6==0{a+=0}$5+$6!=0{a+=$6/($5+$6)}END{print a/NR}' 5

比较PIR值的差异:

由exon 变成IR状态,PIR值仍旧保持一个较高的值,说明这个位置不容易被剪切掉

  • 原先是exon,变成IR;仍旧是发生IR占据主导地位;当然也有剪切类型占据主导地位的

  • 原先是intron,变成IR

  • 原先是IR,变成IR

  • 原先是other,变成IR

IR变成intron的过程,PIR的值不减少,反而有所增加;可能是有些IR没有被鉴定到;或者存在AltA、AltD的情况导致的

由于多倍化物种在比对的时候,有问题因此在对A2和At间进行比较的时候,误差感觉比较大

## 多倍化前后PIR的变化情况
    grep "Chr" A2toAt/A2_IR_At_exon.txt |awk '$5+$6==0{a+=0}$5+$6!=0{a+=$6/($5+$6)}END{print a/NR}'
## 制作绘图数据
# IR to exon
grep "Chr" A2_IR_At_exon.txt |awk '$5+$6==0{print "0\tChr\tIR2exon"}$5+$6!=0{print $6/($5+$6)"\tChr\tIR2exon"}' >>plotdata
grep "Ghir" A2_IR_At_exon.txt |awk '$5+$6==0{print "0\tGhir\tIR2exon"}$5+$6!=0{print $6/($5+$6)"\tGhir\tIR2exon"}' >>plotdata
#exon to IR
grep "Chr" A2_exon_At_IR.txt  |awk '$5+$6==0{print "0\tChr\texon2IR"}$5+$6!=0{print $6/($5+$6)"\tChr\texon2IR"}' >>plotdata 
grep "Ghir" A2_exon_At_IR.txt  |awk '$5+$6==0{print "0\tGhir\texon2IR"}$5+$6!=0{print $6/($5+$6)"\tGhir\texon2IR"}' >>plotdata
# IR to intron
grep "Ghir"  A2_IR_At_intron.txt |awk '$5+$6==0{print "0\tGhir\tIR2intron"}$5+$6!=0{print $6/($5+$6)"\tGhir\tIR2intron"}' >>plotdata
grep "Chr"  A2_IR_At_intron.txt |awk '$5+$6==0{print "0\tChr\tIR2intron"}$5+$6!=0{print $6/($5+$6)"\tChr\tIR2intron"}' >>plotdata
# intron to IR
grep "Chr"  A2_intron_At_IR.txt |awk '$5+$6==0{print "0\tChr\tintron2IR"}$5+$6!=0{print $6/($5+$6)"\tChr\tintron2IR"}' >>plotdata
grep "Ghir"  A2_intron_At_IR.txt |awk '$5+$6==0{print "0\tGhir\tintron2IR"}$5+$6!=0{print $6/($5+$6)"\tGhir\tintron2IR"}' >>plotdata

在同一个基因组内进行比较

  • 比如在A2中都是IR,为啥有的多倍化之后变成了外显子、内含子、IR、Other

  • 在At中都是IR,不同来源的IR,在剪切效率上同样不同

Intron Ration score: 比对到内含子上的read数/内含子长度;再把read总数给标准化

## 在A2中是IR,在At中变成IR、exon、intron、Other
grep "y\s+n" -E 3333 |grep other|cut -f1 |awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/A2_PIR.txt >A2toAt/A2IRAtOther.txt      
grep "n\s+y" -E 3333 |grep other|cut -f2|awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/TM1_PIR.txt >A2toAt/A2OtherAtIR.txt
## 由exon变成IR
grep "n\s+y" -E 3333 |grep exon |cut -f2 |awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/TM1_PIR.txt >A2toAt/A2_exon_At_IR.txt
## 有IR变成exon
grep "y\s+n" -E 3333 |grep exon |cut -f1|awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/A2_PIR.txt >A2toAt/A2_IR_At_exon.txt

## 由IR变成IR

## 由IR变成intron
grep -E  "y\s+n" 3333 |grep intron|cut -f1 |awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/A2_PIR.txt >A2toAt/A2_IR_At_intron.txt

## 有intron变成IR
grep -E  "n\s+y" 3333 |grep intron|cut -f2|awk -F "-" '{print $2,$3,$4,$1}' OFS="\t"|xargs -I {} grep {} ../PIR_AS/TM1_PIR.txt >A2toAt/A2_intron_At_IR.txt

## 二倍体祖先数据
 awk '{print $7"\tIR2exon"}' A2_IR_At_exon.txt >>A2_plot
 awk '{print $7"\tIR2intron"}' A2_IR_At_intron.txt >>A2_plot
 awk '$1~/Chr/{print $7"\tIR2IR"}' A2_IR_At_IR.txt >>A2_plot
 awk '{print $7"\tIR2other"}' A2IRAtOther.txt >>A2_plot
## 四二倍体数据
awk '{print $7"\texon2IR"}' A2_exon_At_IR.txt >>At_plot
awk '{print $7"\tintron2IR"}' A2_intron_At_IR.txt >>At_plot
awk '$1~/Ghir/{print $7"\tIR2IR"}' A2_IR_At_IR.txt >>At_plot

通过对A2中的IR分析发现,大部分的IR在多倍化之后变成了内含子;根据分类发现外显子化的内含子有着最高的IR score值

通过对At中的IR分析发现,大部分的IR在二倍体中同样是IR;同样有些在二倍体中是exon;在四倍体中变成IR;并且这些内含子化的exon在mRNA中仍旧有较高比例的保留

看一下外显子化的IR有多少交集,并且进行GO富集分析

这种外显子化、内含子化,可能起着调控基因表达的作用

A2多倍化为At时,有一个IR发生了外显子化;而D5与Dt始终是外显子;表达量增加

A2多倍化At时,有一个外显子发生了内含子化;而D5与Dt始终是外显子;表达量减少

A2多倍化过程中外显子化的IR:801个,其中有389个IR在D5中是外显子

D5多倍化过程中外显子化的IR: 389个,其中有173个IR在A2中是外显子

  • 二倍体祖先基因组,IR外显子化

## 获取A2到At中外显子化的基因,看一下在D5中的状态
grep "y\s+n" -E A2_At/3333 |grep exon |cut -f1|xargs  -I {} grep {} ../A2_D5/3333 >test.txt
grep exon test.txt|wc -l 
cut -f5 test.txt|sort|uniq -c
## 获取D5到Dt中外显子化IR,看一下在A2中的状态
grep "y\s+n" -E ../D5_Dt/3333 |grep exon |cut -f1|xargs  -I {} grep {} ../A2_D5/3333 >test.txt2
grep exon test.txt2 |wc -l
cut -f5 test.txt2|sort|uniq -c
  • 四倍体IR由外显子转化而来的IR

At基因组中由exon转变为IR:552个,其中有233个在Dt中是exon的状态

Dt基因组中由exon转变为IR:492个,其中有308个在At中是exon的状态

## 获取A2到At过程中,exon转变为IR
grep -E "n\s+y"  ../A2_At/3333 |grep exon|cut -f2 |xargs -I {} grep {} 3333 >test.txt
cut -f5 test.txt |sort|uniq -c
## 获取D5到Dt过程中,exon转变为IR
grep "n\s+y" -E ../D5_Dt/3333 |grep exon|cut -f2 |xargs  -I {} grep {} 3333 >test.txt2
cut -f5 test.txt2 |sort|uniq -c

GO富集分析

  • At中的GO

A基因组外显子化的基因、从外显子转变成IR的基因;因为即使变成IR之后PIR值也还是很高的

  • Dt中的GO

亚基因组特异性的AS

  • At与Dt进行比较的时候,例如At中存在IR、Dt中不存在IR;并且At中那个IR的地方有很多read覆盖,而Dt中几乎没有read覆盖

提取At中发生IR的IRscore ,Dt中没有发生IR的IR score;存在显著性差异

At中发生IR、Dt中没有发生IR;并且发生IR的IR score值大于0.1,没有发生IR的值小于0.1

排除那些由于PacBio没检测到的IR

## 筛选亚基因组中特异的IR
grep "intron\s+IR" -E test.txt|awk '$6>$5&&$5<=0.1{print $0}'|wc -l
  • A2与D5进行比较

## 提取所有事件的分类,和对应的IRS值
python extractPIR.py  -all all_IRScore.txt  -i At_Dt/3333  -o At_Dt/test.txt

Last updated