一、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两个文件