jcvi画两物种的共线性图

参考:https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)

jcvi安装

可以从官网下载:https://codechina.csdn.net/mirrors/tanghaibao/jcvi?utm_source=csdn_github_accelerator
还有一些教程可以参考:https://blog.csdn.net/u012110870/article/details/105857278/
https://www.jianshu.com/p/6f1a191a0c3a
当然比较简单的就是从conda下载啦
我是用pip下载的,教程很多都是用pip2。如果没下pip2,但是用pip2的话,也会报错:

ERROR:Command errored out with exit status 1: python setup.py egg_info Check the logs for command output.
报错内容

如果网速差,前面下得挺好,后面就突然报错:

pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

解决方法:用临时镜像会特别快

pip --default-timeout=100 install ./jcvi -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com #豆瓣的镜像

其他镜像:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

数据下载和获取

需要的数据有:GFF3注释文件、CDS序列文件
可下载数据来源:phytozome数据库、ensembl plants数据库、NCBI数据库、文献.....
我用的是自己测序的广州相思子(后续用AC代替)和在NCBI下的非洲相思子(后续用AP代替)

数据处理

将.gff3文件转换成.bed文件

python -m jcvi.formats.gff bed --type=mRNA --key=ID AC.gff3 -o AC.bed
python -m jcvi.formats.gff bed --type=mRNA --keyID AP.gff3 -o AP.bed

然后将.bed文件去重复

python -m jcvi.formats.bed uniq AC.bed
python -m jcvi.formats.bed uniq AP.bed

如果你要利用gff文件从基因组文件提取出cds或者蛋白质序列的话,可以用gffread命令:

conda install gffread -y #安装
gffread target.gff3 -g target.fa -y target.pep.fa #翻译后蛋白序列
gffread target.gff3 -g target.fa -x target.cds.fa #获得cds序列
gffread target.gff3 -g target.fa -w target.exons.fa  #获得exon序列
gffread target.gff3 -T -o target.gtf #格式转换

共线性分析

教程是:

python -m jcvi.compara.catalog ortholog grape peach --no_strip_names

(在这里可以加多一条“--cscore=.99”命令,过滤掉一些噪音)

因为命令里没有input文件,我就很奇怪。然后看到了后续的输出结果:

23:34:43 [synteny] Assuming --qbed=grape.bed --sbed=peach.bed
23:34:43 [base] Load file `grape.bed`
23:34:43 [base] Load file `peach.bed`
23:34:44 [blastfilter] Load BLAST file `grape.peach.last` (total 515965 lines)
23:34:44 [base] Load file `grape.peach.last`
23:34:46 [blastfilter] running the cscore filter (cscore>=0.70) ..
23:34:46 [blastfilter] after filter (379462->50584) ..
23:34:46 [blastfilter] running the local dups filter (tandem_Nmax=10) ..
23:34:47 [blastfilter] after filter (50584->21696) ..
...
Stats: Min=4 Max=1002 N=687 Mean=67.1863173216885 SD=110.64978224380248 Median=27.0 Sum=46157
NR stats: Min=4 Max=356 N=687 Mean=26.595342066957787 SD=43.0459201862291 Median=11.0 Sum=18271

我就猜想 species_a 和 species_b 应该是数据的前缀名,所以我就改为了

python -m jcvi.compara.catalog ortholog AC AP --no_strip_names

但是报错了

10:09:41 [blastfilter] lcl|NW_020874292.1_cds_XP_027356858.1_2215 not in AP.bed
......
ValueError: A total of 0 anchor was found. Aborted.

报错说的是CDS序列在.bed文件里找不到。很奇怪,因为教程说的是在.gff3文件里把mRNA提出来转换成.bed文件。我打算再做一次提cds序列的。

还是不行。

最终找到原因:.bed文件和.cds文件前缀要一样,ortholog命令会从.cds文件中找.bed文件里的序列名,所以两个文件的序列名字要一样,要不然就会报错。

最后的结果是


共线性散点图

画共线性线图

需要三个文件:

  • seqids: 需要展现哪些序列
  • layout: 不同物种的在图上的位置
  • .simple: 从.anchors文件创建的更简化格式

.simple文件

目的:从anchor文件中提取一些子集,用一种简洁的形式概括。

python -m jcvi.compara.synteny screen --minspan=30 --simple AC.AP.anchors AC.AP.anchors.new

得到结果:

Before: 571 blocks, After: 286 blocks

seqids文件

目的:告诉软件应画多少组染色体。在这里可以移除小scaffolds。第一、二行分别为AC、AP的染色体数

touch seqids # 创建seqids文件
vim seqids
chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11
scaffold_1, scaffold_2,scaffold_3,scaffold_4, scaffold_5, scaffold_6 ,scaffold_7, scaffold_8, scaffold_9, scaffold_10, scaffold_11
# i 键输入;Esc 键退出;输入“:wq” 保存并退出

layout文件

目的:告诉软件图在哪里、画什么。整个画布的x轴是0-1,y轴是0-1。前各列分别表示位置、旋转角度、颜色、物种名称、垂直对齐、bed文件。轨道0现在是AC,轨道1现在是AP。下一节指定在轨道之间画什么边。要求使用文件中的信息绘制轨道0和1之间的边。

# y, xstart, xend, rotation, color, label, va,  bed
 .6,     .1,    .11,       0,      , AC, top, AC.bed
 .4,     .1,    .11,       0,      , AP, top, AP.bed
# edges
e, 0, 1, AC.AP.anchors.simple

最后画图

python -m jcvi.graphics.karyotype seqids layout

但是报错了

ZeroDivisionError: float division by zero

原因是:bed文件中染色体名称跟seqid中的染色体名称不一致。可以通过.gff文件查看染色体名称。
最后就画好啦~

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

推荐阅读更多精彩内容