SUPPA 可变剪切分析
- SUPPA是一款通过转录本定量来获取可变剪切定量结果的软件。转录本的定量方式有很多,例如count,FPKM, TPM等,作者建议使用TPM,因为先均一化了基因的长度,然后均一化了测序的深度。同时建议使用salmon软件进行定量
- 软件的下载与安装
首先下载salmon二进制版本
wget https://github.com/COMBINE-lab/salmon/releases/download/v0.14.0/salmon-0.14.0_linux_x86_64.tar.gz
tar zxvf salmon-0.14.0_linux_x86_64.tar.gz -C ../
下面使用小鼠的转录本来建立索引
wget ftp://ftp.ensembl.org/pub/release-96/fasta/mus_musculus/cds/Mus_musculus.GRCm38.cds.all.fa.gz
gunzip Mus_musculus.GRCm38.cds.all.fa.gz
perl -lane 'if(/^>/){$id=(split/\./,$_)[0];print $id}else{print}' Mus_musculus.GRCm38.cds.all.fa >Mus_musculus.GRCm38.cds.all.format.fa
使用salmon建立索引
mkdir Mus_musculus.GRCm38.cds.index
export LD_LIBRARY_PATH=/media/sdb/user/yueyao/software/salmon-latest_linux_x86_64/lib:$LD_LIBRARY_PATH
/media/sdb/user/yueyao/software/salmon-latest_linux_x86_64/bin/salmon index -t Mus_musculus.GRCm38.cds.all.format.fa -i Mus_musculus.GRCm38.cds.index
SUPPA2的安装,需要注意的是SUPPA2是使用python3.4编写的,所以不要使用python2来进行安装了
#使用pip安装
pip install SUPPA==2.2.1
#使用conda进行安装
conda install -c bioconda suppa
#从github下载
wget https://github.com/comprna/SUPPA/archive/master.zip -O suppa2.zip
salmon进行定量
/media/sdb/user/yueyao/software/salmon-latest_linux_x86_64/bin/salmon quant -i Mus_musculus.GRCm38.cds.index -l ISF --gcBias -1 /media/sdb/user/yueyao/CircosRNA/00.data/107190A/107190A_1.fq.gz -2 /media/sdb/user/yueyao/CircosRNA/00.data/107190A/107190A_2.fq.gz -p 12 -o 107190A
-l 参数表示
提取salmon结果中的TPM值
python /media/sdb/user/yueyao/software/SUPPA-master/multipleFieldSelection.py -i 107190A/quant.sf -k 1 -f 4 -o 107190A_iso_tpm.txt
-k 表示转录本id在第一列
-f 表示TPM值在第四列
使用suppa进行生成一个ioe文件,需要注意的是gtf注释文件是进行一些简单的处理,这里将小鼠的ensemble下载的gtf处理成如下格式
chr14 Ensembl exon 73741918 73744001 0.0 - . gene_id "ENSG00000000001"; transcript_id "ENST00000000001.1";
chr14 Ensembl exon 73749067 73749213 0.0 - . gene_id "ENSG00000000001"; transcript_id "ENST00000000001.1";
chr14 Ensembl exon 73750789 73751082 0.0 - . gene_id "ENSG00000000001"; transcript_id "ENST00000000001.1";
chr14 Ensembl exon 73753818 73754022 0.0 - . gene_id "ENSG00000000001"; transcript_id "ENST00000000001.1";
使用如下命令
perl -F"\t" -lane 'if(/^[1-9]+/){$F[8]=~/(gene_id\s"ENSMUSG\d+";)\s/;$gene=$1;$F[8]=~/(transcript_id\s"ENSMUST\d+";)\s/;$trans=$1;if($F[2] eq "exon"){print join("\t",@F[0..7])."\t".qq{$gene $trans}}}' Mus_musculus.GRCm38.96.gtf >Mus_musculus.GRCm38.96.format.gtf
使用generateEvents命令根据基因组的gtf注释文件生成所有的可变剪切事件,格式保存为ioe格式
python /media/sdb/user/yueyao/software/miniconda3/envs/suppa2/bin/suppa.py generateEvents -i Mus_musculus.GRCm38.96.format.gtf -o 107190A.events -e SE SS MX RI FL -f ioe
-i 输入的gtf文件
-o 输出的文件前缀
-e 输出可变剪切的类型
-f 设置输出格式
将不同的可变剪切事件合并成一个结果
awk '
FNR==1 && NR!=1 { while (/^<header>/) getline; }
1 {print}
' *.ioe > ensembl_mm10.events.ioe
需要注意的时如果使用的是RefSeq annotation注释文件,要使用--pooled-genes参数,因为RefSeq基因是根据它们所包含的mRNA序列来识别,而不是基因位置信息,这可能导致同一个基因会比对到基因组两个不同的地方去,或者是两个同源异构体具有相同的exon或者剪切位点被标记为不同的基因。pooled-genes重新定义了这种情况
得到一个PSI值,需要注意的是使用的转录本ID和gtf的转录本ID应该是一致,数目不一样可能会有错误提示:
python /media/sdb/user/yueyao/software/miniconda3/envs/suppa2/bin/suppa.py psiPerEvent -i ensembl_mm10.events.ioe -e 107190A_iso_tpm.txt -o TRA2_events
提取某一个基因的可变剪切事件进行不同分组的作图
python /media/sdb/user/yueyao/software/SUPPA-master/scripts/generate_boxplot_event.py -e "ENSMUSG00000000244;MX:7:143007005-143011034:143011108-143015581:143007005-143014959:143015060-143015581:+" -i TRA2_events.psi.psi -g 1-2,3-4,5-6 -c A1,A2,A3 -o /media/sdb/user/yueyao/Test/suppa2/result/
-i 输入PSI矩阵
-e 某一个基因的某种类型的可变剪切事件
-g 设置分组的样品
-c 设置组名,与前面的分组对应
根据PSI文件,将可变剪切的结果和表达量的结果按照分组分成两个文件
需要注意的是样品的名称命名不能以数字开头,因为R脚本默认会对读入的title的数字前面加一个X
#注意样品的命名,可能会影响这一步
# Split the PSI and TPM files between the 2 conditions:
Rscript /media/sdb/user/yueyao/software/SUPPA-master/scripts/split_file.R iso_tpm.txt S107190A,S107192A,S107194A S107195A,S107196A,S107197A /media/sdb/user/yueyao/Test/suppa2/Group1_iso_tmp.txt /media/sdb/user/yueyao/Test/suppa2/Group2_iso_tmp.txt
Rscript /media/sdb/user/yueyao/software/SUPPA-master/scripts/split_file.R TRA2_events.psi S107190A,S107192A,S107194A S107195A,S107196A,S107197A /media/sdb/user/yueyao/Test/suppa2/Group1.psi /media/sdb/user/yueyao/Test/suppa2/Group2.psi
计算两个不同分组的可变剪切差异
python /media/sdb/user/yueyao/software/SUPPA-master/suppa.py diffSplice -m empirical -gc -i ensembl_mm10.events.ioe -p Group1.psi Group2.psi -e Group1_iso_tmp.txt Group2_iso_tmp.txt -o result/Group1_vs_Group2
根据差异可变剪切的结果,可以选区某一个类型的可变剪切事件进行聚类分析,我这里用了所有的事件,好像结果不正常
python /media/sdb/user/yueyao/software/SUPPA-master/suppa.py clusterEvents --dpsi Group1_vs_Group2.dpsi.temp.0 --psivec Group1_vs_Group2.psivec --sig-threshold 0.05 --eps 0.2 --separation 0.11 -dt 0.2 --min-pts 10 --groups 1-3,4-6 -c OPTICS -o cluster
- 更详细的说明可以参考https://github.com/comprna/SUPPA/wiki/SUPPA2-tutorial#differential-splicing-with-local-events
- 输入输出的格式参考https://github.com/comprna/SUPPA#output-files-1
SUPPA 可变剪切分析的更多相关文章
- Deep-learning augmented RNA-seq analysis of transcript splicing | 用深度学习预测可变剪切
可变剪切的预测已经很流行了,目前主要有两个流派: 用DNA序列以及variant来预测可变剪切:GeneSplicer.MaxEntScan.dbscSNV.S-CAP.MMSplice.clinVa ...
- 利用circpedia 数据库探究circRNA的可变剪切
circpedia 中收录了利用circexplorer 软件识别到的circRNA, 覆盖了人,小鼠,鸟类,昆虫多个物种的多种细胞系的数据 官网链接如下: http://www.picb.ac.cn ...
- 转录组分析综述A survey of best practices for RNA-seq data analysis
转录组分析综述 转录组 文献解读 Trinity cufflinks 转录组研究综述文章解读 今天介绍下小编最近阅读的关于RNA-seq分析的文章,文章发在Genome Biology 上的A sur ...
- 【GWAS文献】基于GWAS与群体进化分析挖掘大豆相关基因
Resequencing 302 wild and cultivated accessions identifies genes related to domestication and improv ...
- PacBio三代全长转录组/Iso-Seq技术及案例分析
参考:产品手册 PacBio三代全长转录组有什么优势? 近年来,随着高通量测序技术的发展,转录组测序已经成为研究基因表达调控的主要手段.但二代的转录本重构准确率很低,三代可以直接得到全长转录本,无需组 ...
- RNA-seq差异表达基因分析之TopHat篇
RNA-seq差异表达基因分析之TopHat篇 发表于2012 年 10 月 23 日 TopHat是基于Bowtie的将RNA-Seq数据mapping到参考基因组上,从而鉴定可变剪切(exon-e ...
- 使用Tophat+cufflinks分析差异表达
使用Tophat+cufflinks分析差异表达 2017-06-15 19:09:43 522 0 0 使用TopHat+Cufflinks的流程图 序列的比对是RNA分析 ...
- 用tophat和cufflinks分析RNAseq数据[转载]
转自:http://blog.sciencenet.cn/home.php?mod=space&uid=635619&do=blog&id=884213 //今天看到一篇非常好 ...
- 【蛋白质基因组】Proteogenomics方法介绍及分析思路
概念 利用蛋白质组学数据,结合基因组数据(DNA).转录组数据(RNA)来研究基因组注释问题,被称为蛋白质基因组学."蛋白质基因组学"一词由Jaffe 等于2004 年首次提出,作 ...
随机推荐
- 【微信小程序】如何获取用户绑定手机号
用户调用wx.login()方法,获取登录用户凭证code wx.login({ success: function(res) { console.log('loginCode', res.code) ...
- 【一起来烧脑】读懂JQuery知识体系
背景 在现在就业的过程中,会运用JQuery是你的加分项,那么什么是JQuery,嗯,jquery是JavaScript的函数库,是一种轻量级的JavaScript库,写得少,做的多,导致jQuery ...
- 《挑战30天C++入门极限》对C++递增(增量)运算符重载的思考
对C++递增(增量)运算符重载的思考 在前面的章节中我们已经接触过递增运算符的重载,那时候我们并没有区分前递增与后递增的差别,在通常情况下我们是分别不出++a与a++的差别的,但的确他们直接是 ...
- MySQL 常用字段类型与对应的Java类型
varchar 不定长字符串 字符串或是没有合适类型时,可以选择它作为字段类型 对应Java中的String int bigint 数值 一般以int作为数字的默认选择,数值很大时使用bigint 对 ...
- 模板 - 字符串 - KMP算法
要先理解前缀函数的定义,前缀函数 \(\pi(i)\) 表示字符串 \(s[0,i]\) 的同时是其最长真前缀及最长真后缀的长度,简单来说就是这个 \(s[0,i]\) 首尾最长的重叠长度(不能完全重 ...
- Nginx 所使用的 epoll 模型是什么?
对于 Nginx,相信有过 Web 服务部署经验的同学都不陌生,它有以下特点: 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 相较于 A ...
- php手记之05-tp5获取器与修改器
获取器 命名规范为: getFieldNameAttr 例如,我们需要对状态值进行转换,可以使用: <?php class User extends Model { public functio ...
- 咏南跨平台中间件支持LINUX和WINDOWS插件架构
咏南跨平台中间件支持LINUX和WINDOWS插件架构
- Android系统分区
Android系统开发时,经常会遇到添加或者调整系统分区大小的问题,下面以mstar的一款产品为例进行分析: (1)mount指令可以查看到板子中挂在的分区,主要关注ext4类型分区,例如tvserv ...
- eclipse连接夜神模拟器方法
用eclipse 进行安卓开发的时候我们会遇到安卓自带的模拟器启动时间过长,反应慢等的问题,这个时候我们就希望使用别的安卓模拟器,而我自己喜欢使用夜神模拟器.1.首先我们启动eclipse 和夜神模拟 ...