生物信息-McScan(Python-jcvi)共线性画图
比较基因组学中,共线性的分析的图无疑是最漂亮的。
共线性分析可以很好地解释进化关系和多倍化事件。
本文主要介绍的是唐老师的Python版McScan(jcvi工具包),这个包很强大,但是其功能在官网的说明并不详细,在众人的博客中也比较零散。
我刚使用这个包的时候(2017年)还很难安装,需要预装各种依赖,不过现在的同学们很幸福了,可以直接用pip一键安装了。
软件包链接:https://github.com/tanghaibao/jcvi
安装过程很简单:
pip install jcvi
pip install git+git://github.com/tanghaibao/jcvi.git
如果安装不成功,再执行一次上述命令即可。
python 用conda安装即可。
官方配图如下:

鄙人拙作如下:


本文其实并没有想用常规的方法告诉同学们怎么用,我只是想告诉同学们一键生成最终结果的办法:
1. 两两物种之间的共线性分析和画图:
诸君只需要准备好下载好的两个需要比对的基因组序列文件和注释文件(species.gff),进行格式化:
#下载基因组相关数据
get-genome.pl
#格式化基因组序列文件
format_fa.pl
#格式化基因组注释文件
format_gff.pl
#共线性画图
perl synteny-jcvi.shell.pl species1 species2
#统计共线块的分布情况
stat_block.pl
2. 多物种基因组序列比对,保守序列/区域画图(准备好lastz软件,不需要准备注释文件)
# 获得物种两两比对结果
lastz-axt.sh reference species
# 获得多序列比对结果
roast tree *sing.maf roast.maf
# 获得各物种与reference的比对矩阵
cat roast.maf| awk 'BEGIN {OFS = "\t"} ; {if ($1~/a/){m++}}{if ($5 == "+") print $2, $3, $3 + $4, $2"-common_"m"\t0\t"$5; else print $2, $6 - $3 - $4, $6 - $3, $2"-common_"m"\t0\t"$5}' | grep -P "^\S" | grep -v score > mostcons.bed
grep Whear_chinese mostcons.bed | awk '{if ($3-$2 >= 2000){print }}' | perl -ne 'print "$1\n" if /(common_\d+)/' > Whear_chinese.2k.id
rm mostcons.bed.2k
for i in `cat Whear_chinese.2k.id`;do grep -P "$i\t" mostcons.bed >> mostcons.bed.2k ;done
for i in `cut -f 1 mostcons.bed.2k | sort | uniq`;do grep $i mostcons.bed.2k > $i.bed ; done
sortBed -I mostcons.bed.2k > mostcons.bed.2k.sort
# 生成配置文件
perl anch.pl mostcons.bed.2k.sort
# 画多序列共线性图(如下,可以直观看到倒位,缺失等重要信息)
python -m jcvi.graphics anchors seqids layout
3. 多物种基因共线性图(准备好blastp软件,需要gff注释文件)
# blastp比对
# 获取各物种与reference的RBH比对矩阵
# 生成配置文件(anchors文件由RBH矩阵替换)
perl anch.pl mostcons.bed.2k.sort
# 画图
python -m jcvi.graphics anchors seqids layout
本操作流程节约了各种配置编辑和试错的时间和精力,增加了无注释文件或者非编码区(全基因组序列,而非仅基因区)的共线性分析。
注意事项:
1. 虽然可以conda一键安装python,pip一键安装jcvi,但是如果有依赖在运行两次jcvi操作后还是无法安装,请手动安装。
2. 注意所有文件严格在第一步的时候进行严格地格式化,请文件中不要出现特殊字符,尽量只有数据/字母/下划线。
3. 如果要添加颜色,请在矩阵中加上注释(红色:r*;黄色:y*)
*. 有任何BUG,请及时与管理员联系。
脚本将陆续上传于网站cospure.cn和github中。
本博客主要用于前期,后期整理请关注微信公众号swxxfxxx。
生物信息-McScan(Python-jcvi)共线性画图的更多相关文章
- python使用matplotlib画图
python使用matplotlib画图 matplotlib库是python最著名的画图库.它提供了一整套和matlab类似的命令API.十分适合交互式地进行制图. 先介绍了怎样使用matplotl ...
- 如何在Python中快速画图——使用Jupyter notebook的魔法函数(magic function)matplotlib inline
如何在Python中快速画图--使用Jupyter notebook的魔法函数(magic function)matplotlib inline 先展示一段相关的代码: #we test the ac ...
- 炼数成金数据分析课程---10、python中如何画图
炼数成金数据分析课程---10.python中如何画图 一.总结 一句话总结: 主要matplotlib库,pandas中也可以画一些基础图 大纲+实例快速学习法 1.matplotlib的最简单画图 ...
- 共线性分析-MCscan - python (jcvi)
本来是不会再写这个文档的,但是由于长时间没有用这个模块,这个模块不知道是我自己弄掉了,还是别的同学误删了,于是我重新安装一下. 首先下载conda,并下载好python which pip 直接安装 ...
- python使用matplotlib画图,jieba分词、词云、selenuium、图片、音频、视频、文字识别、人脸识别
一.使用matplotlib画图 关注公众号"轻松学编程"了解更多. 使用matplotlib画柱形图 import matplotlib from matplotlib impo ...
- MCscan-Python-jcvi 共线性画图最后一章更新
经过几轮调试和修改,共线性图终于可以上眼了.如下: 图中红色的为目标基因,蓝色的为reference species目标基因周围15个基因,天蓝色为再往外15个基因,黄色为与reference spe ...
- python 学习5--matplotlib画图实践
### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 学习参考: http://www.cnblogs.com/vamei/archive/2013/01/30/28 ...
- python matplotlib.plot画图显示中文乱码的问题
在matplotlib.plot生成的统计图表中,中文总是无法正常显示.在网上也找了些资料,说是在程序中指定字体文件,不过那样的话需要对plot进行很多设置,而且都是说的设置坐标轴标题为中文,有时候图 ...
- Python中的画图初体验
学到<父与子编程之旅>的16章了,跟书上的例子进行学习,学会了画圆,我又找到了画线的方法,于是就可以在screen上画日本国旗了: 手动画的不好看,也可以不手动画,直接画线: 当然也可以直 ...
随机推荐
- Kubernetes-16:一文详解ServiceAccount及RBAC权限控制
一.ServiceAccount 1.ServiceAccount 介绍 首先Kubernetes中账户区分为:User Accounts(用户账户) 和 Service Accounts(服务账户) ...
- TomcatAJP文件包含漏洞
漏洞概述 2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布关于Apache Tomcat的安全公告,Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2 ...
- First-blog:解决mybatis 用mysql进行模糊搜索时,查不了中文问题
如图:点击小字 按搜索时,出现乱码搜索不了 解决办法:出现乱码问题,一般无非两种 1.是数据库问题 2.是服务器问题 我在MySQL命令行搜索时,中文可以实现,说明时服务器问题 通过修改 tomcat ...
- Matrix Power Series(POJ 3233)
原题如下: Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 28044 Acce ...
- visual studio项目多级引用不拷贝dll的问题
最近碰到一个visual studio项目多级引用不拷贝dll的问题,花了很久查了很多资料,特此记录 A项目引用B项目, B项目引用C项目,C项目引用ef及oracle.ef using Oracle ...
- [程序员代码面试指南]最长递增子序列(二分,DP)
题目 例:arr=[2,1,5,3,6,4,8,9,7] ,最长递增子序列为1,3,4,8,9 题解 step1:找最长连续子序列长度 dp[]存以arr[i]结尾的情况下,arr[0..i]中的最长 ...
- Dubbo必须会的知识点
前言 应用架构演变: 单一架构ORM:单机构建网站,是一个高内聚版本,所有功能部署在一起.通过一个容器和JSP/Servlet技术或通过一些开源的框架如SSM以及SSH,通过数据库管理系统来存储数据. ...
- Linux实战(11):Centos后期添加网卡配置
前言 最近在折腾网卡,发现在已装centos上的机器上直接加网卡,开机后在系统中是没有启动的,下面的步骤是启动的过程,大家可以参考一下. 正文 首先我们先看网卡配置目录下的文件跟网卡 查询UUID y ...
- 2.Kafka-架构
- Docker:二、开始部署第一个Asp.net应用
各位看官大家好,接着上一篇,我们构建自己的镜像文件成功之后,准备开始部署自己的第一个docker应用了... 接着上文,我们构建自己的镜像,如下是Dockerfile文件 #引入运行环 ...

