基因组circos图绘制流程记录

一、Circos安装

conda 安装

conda create --name circos

conda install circos

二、circos输入文件准备

前提必须文件:参考基因组文件,基因组注释文件(gff3), CDS文件

1、染色体信息文件

染色体信息文件格式:

前2列:固定为`chr -`,表明我们要画染色体轮廓

第3列:染色体ID,像身份证号,`注意:如果ID中除了“_”有其他符号一律会报错`

第4列:染色体Label,像人名,会显示在图上而ID不会

第5列:染色体起始位置第6列:染色体终止位置

第7列:染色体的颜色,chr1-4,chry代表的都是circos内置颜色的名称

chr-Chr1 C1030427671chr1

chr-Chr2 C2019698289chr2

chr-Chr3 C3023459830chr3

2、间隔区间基因密度文件

2.1 统计分隔区间,格式如下:

第1列:染色体ID第2列:起始分隔点第3列:终止分割点

-w: windowSize:要根据你基因组的大小,动态调整

bedtools sort:由于后面要使用bedtools做一些统计,因此需要排序,不过默认也是排好的,以防万一。

2.2 统计基因密度,格式如下:

第1列:染色体ID

第2列:在染色体上的起始位置

第3列:在染色体上的终止位置

第4列:区间内基因的数目

Chr1    0  100000  29

Chr1    100000  200000  36

Chr1    200000  300000  31

2.3 统计GC含量,格式如下:

2.4 统计重复序列密度,格式如下:

grep '[[:blank:]]similarity[[:blank:]]' zhujieshu.repeat.gff3 | awk '{print $1"\t"$4"\t"$5}'| bedtools coverage -a zhujieshu.chr.fasta.100kb -b - | cut -f 1-4 > zhujieshu.repeat.density.txt

2.5 共线性文件,格式如下:

第1列:染色体ID,指连线起始的染色体

第2列:连线起始的染色体的起始位置

第3列:连线起始的染色体的终止位置

第4列:染色体ID,指连线的终止染色体

第5列:连线终止的染色体的起始位置

第6列:连线终止的染色体的终止位置

Chr1    6265416 6266937 Chr1    27686992    27688127

Chr1    6331398 6333743 Chr1    27759973    27761588

三、物种间共线性分析

共线性分析可以很好地解释进化关系和多倍化事件。主要用的是Python版McScan(jcvi工具包),这个包很强大,是从MCScanx升级而来的基因组共线性分析软件。

安装流程(踩坑记录):

使用conda安装

conda create -y -c bioconda -n jcvi jcvi

pip install jcvi

之后 运行过程中会报错,原因是缺少LAST

通过conda安装LAST

conda install LAST

然后运行之仍然会报错,原因是缺少LaTex

通过conda安装LaTex

conda install texlive-core

恭喜你!安装的问题就解决啦,感谢conda!

后面就是共线性流程:

python -m jcvi.formats.gff bed --type=mRNA --key=ID genome_file/zhujieshu.gene.gff3 -o zhujieshu.bed

如果没有CDS文件,就自己提取

gffread in.gff3 -g ref.fa -x cds.fa

python -m jcvi.compara.catalog ortholog qiuqie zhujiashu 

python -m jcvi.compara.synteny screen --minspan=30 --simple qiuqie.zhujieshu.anchors qiuqie.zhujieshu.anchors.new

python simple2links.py qiuqie.zhujieshu.anchors.simple     生成qiuqie.zhujieshu.anchors.simple_link.txt文件就可因用来画圈图了

四、circos配置文件画图

有了前面的准备文件以后,我们就可以配置文件,进行画图了

#指定染色体文件(绝对/相对路径+文件名)

karyotype = chr.info.txt

#↓↓↓###########################################################

chromosomes_units = 1000000  #定义最小单位,即100万bp为一个units,即1u = 100w,后面刻度线都是基于此的操作,如果染色体长度都在5kw以上,推荐用100w,否则推荐用10w

<colors>  #原来的颜色太丑了,重新定义颜色,注意重新定义颜色都需要加上*号

chr1* = red

chr2* = orange

chr3* = green

chr4* = blue

</colors>

#↑↑↑###########################################################

<links>

<link>

file          = zhujieshu_qiuqie/qiuqie.zhujieshu.anchors.simple_link.txt  #指定存放内部连线数据的文件

radius        = 0.7r                #radius定义内部连线区域的大小,表示从0-0.7r均为连线区域,预留出位置为了给其他图形留出空间

bezier_radius = 0r            #控制连线的弯曲程度,数值越大越弯曲,范围为0r-1.5r

crest = 1  #简单理解为弯曲点的位置,越大弯曲点越向中中靠拢。由外到内数值依次减小,范围为0-1.25

thickness    = 2  #连线的粗细

#以下为开启丝带模式,其宽度与坐标差值相同,当然为了绘制出明显的丝带效果,你要人为的去夸大坐标差值才能明显显示出来

ribbon = yes

flat = yes

##stroke_thickness = 2

<rules>  #用来做条件判断的标签,圈图各式各样就在于rule的不同使用

<rule>

condition    = var(intrachr)        #condition表示条件,=后面为具体的动作。此为获取在同一条染色体间的连线

show          = no                  #规定在同一条染色体间的连线不展示

</rule>

<rule>

condition    = 1                  #condition = 1表示永远成立

color        = eval(var(chr1))    #连线的颜色与对应的染色体的颜色相同

flow          = continue          #当上面的rule执行完之后继续执行下面的rule,可以改为stop

</rule>

<rule>

condition  = max(var(size1),var(size2)) < 50kb  # 如果连线端点的值小于50kb则不显示,这个我不是特别确定。

show      = no

</rule>

</rules>

</link>

</links>

<plots>

#GC content

<plot>

type = line

stroke_thickness = 1

file = genome_file/qiuqie_zhujieshu.GC.density.txt

fill_color = green

stroke_color = black

glyph = circle

glyph_size = 5

#max = 100

min = 30000

r1 = 0.82r

r0 = 0.72r

</plot>

#gene density

<plot>

type = histogram

#stroke_thickness = 1

file = genome_file/qiuqie_zhujieshu.gene.density.txt

fill_color = blue

#stroke_color = black

glyph = circle

glyph_size = 5

#max = 100

#min = 0

r1 = 0.92r

r0 = 0.82r

</plot>

<plot>

type = heatmap

#stroke_thickness = 1

file = genome_file/qiuqie_zhujieshu.repeat.density.txt

fill_color = blue

#stroke_color = black

glyph = circle

glyph_size = 5

#max = 100

#min = 0

r1 = 0.97r

r0 = 0.92r

</plot>

</plots>

#-----------------------------------------------------------------------------------

<ideogram>                #这是定义染色体相关参数的标签,以</ideogram>结尾,其中包括要设置的参数

<spacing>                #定义染色体间隙宽度的标签,以</spacing>,其中包括要设置的参数

default = 0.005r          #r指的是圆的周长,设置0.5%圆的周长为间隙

#<pairwise hsY;hs1>      #可以用<pairwise>标签特别指定某些染色体的间隙(用的是ID),因为在大多数文章中,都会留一个大间隙,来放label

#spacing = 20r            #这里20r表示是相对default = 0.005r的20倍,也就是10%的圆的周长

#</pairwise>              #标签都要以</>结尾,

</spacing>                #间隙定义结束,下面是对染色体样式的调整

radius          = 0.90r  #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。

thickness        = 20p    #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p

fill            = yes    #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色

stroke_color    = dgrey  #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106

stroke_thickness = 2p    #染色体边框的粗细

#↓↓↓##########################染色体标签###############################

show_label      = yes        #选择yes表示要显示label

label_font      = default    # 字体可以再 etc/fonts.conf 查看所有,默认为CMUBright-Roman

label_radius    = dims(image,radius)-60p  #使用dims()获取图像半径的大小,从而定位染色体标签的位置,也可以直接定义1.075r

label_size      = 30        #字体的大小

label_parallel  = yes        #将Label的方向设置为与染色体平行

#↑↑↑###########################################################

</ideogram>              #定义染色体属性的标签结束

#↓↓↓#########################刻度线###############################

show_ticks          = yes  #选择yes表示要显示刻度线

show_tick_labels    = yes  #选择yes表示要显示刻度线的数值

#定义刻度线的整体位置与形状

<ticks>                    #刻度线的转用标签,但凡是复数出现的,其下面的参数都表示全局参数,像下面的<tick>单数形式,都表示局部参数

radius          = 1r      #刻度线的位置,1r为最远距离,超过1r不再显示

color            = black

thickness        = 2p

multiplier      = 1e-6    #把刻度线标签(bp)缩小10万倍显示

format          = %d      #然后以整数的形式标记在刻度线上

#定义小的刻度线,且不显示数值

<tick>

spacing        = 5u        #最开始我们定义1u = 1000000,表示每500w bp显示一个小刻度线

size          = 10p

show_label    = no        #由于小的刻度线展示出来太密集,因此我们no不展示,默认不展示

</tick>

#定义大的刻度线,显示数值

<tick>

spacing        = 25u

size          = 15p

show_label    = yes

label_size    = 20p

label_offset  = 10p      #设置数值和刻度线之间的间隔

format        = %d

</tick>

</ticks>

#↑↑↑###########################################################

#-----------------------------------------------------------------------------------

#下面是每次都要复制粘贴上去的,他们属于circos自带的配置文件,用于调用颜色,距离,报错等信息

<image>                    #注意路径

<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>

</image>

<<include etc/colors_fonts_patterns.conf>>

#官方没有提到下面的文件,但是没有这个文件会报错,所以还是加上去

五、画图

配置文件准备好以后,运行:

circos -conf circos.conf

生成circos.png、circos.svg两个文件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容