introduction
- 委托任务,绘制circos图
- 警告,如果有选择的话,先考虑使用circlize来绘制,因为circos的上手难度较大,不要像吾辈这样当个愣头青直接冲;相较于circos,circlize的教程也更多(circos基本没有几篇),后期的调整等等也比较方面(看起来是这样的,毕竟吾辈实际也没有用过)。如果对美感没有什么要求的话,TBtools也可以考虑一下
- 这里附上一张吾辈的结果图;颜色果然应该调深一些,不过这里的主要原因应该是哪几种重复元件的密度太低,像嘴歪两层的gene和TIR转座子就好很多
镜像容器准备
- 直接使用已经配置好的circos镜像
- 虽说conda能够下载,但一些依赖模块收集起来太麻烦了,这里就是该发挥docker镜像包的优势了
docker pull dtempleton/circos- 创建容器
docker run -it --name circos --user root -v C:\Users\koto\Desktop\docker:/home/server -w /home/ dtempleton/circos操作流程
以我这张circos图为例,虽然圈圈看起来挺多的,实际上也就分为核型图、密度图、美化三个部分
核型图
- 介绍:核型图就是最外层的那一圈染色体,这个图制作起来最简单;首先就是计算染色体的长度信息,samtools就可以搞定;然后,调整格式,适合circos的输入,添加配色,lable标签(染色体在图形上的显示名称),over
- 获取每条染色体的长度信息
- Chr1 305000000(这样的)
samtools faidx KNX_hap1_hap2.genome.fa
cut -f1,2 KNX_hap1_hap2.genome.fa.fai > chr.len.txt- 转换成 Circos karyotype 格式:
- Circos 的 karyotype 文件每行格式:
- chr - <ID> <LABEL> 0 <LENGTH> <COLOR>
- awk脚本生成
- 把原本的染色体长度文本信息转换成适合circos画图的输入信息,大致这样
- 包含了必要的染色体编号,长度信息,颜色信息
awk '
BEGIN {
srand();
colors[1]="red"; colors[2]="green"; colors[3]="blue";
colors[4]="orange"; colors[5]="purple"; colors[6]="brown";
last=0
}
{
hap=substr($1,length($1),1)
chrnum=substr($1,4,length($1)-4)
chrname=$1
print hap, chrnum, chrname, $2
}' chr.len.txt | sort -k1,1 -k2,2n | \
awk -v colors="red,green,blue,orange,purple,brown" '
BEGIN {
split(colors,c,","); last=0
}
{
do { idx=int(1+rand()*6) } while(idx==last)
last=idx
print "chr - "$3" "$3" 0 "$4" "c[idx]
}' > karyotype.txt- 调整一下karyotype格式
- 单倍型A正序,单倍型B倒序,这样在图上观感更好
- 原先的顺序是01A-13A,01B-13B;按照circos的渲染规则,以顺时针进行排序旋绕,12点的左右分别是开头(01A)和结尾(13B);所以,这里把单倍型B的顺序倒过来的话,在图形上看A和B分别以顺时针和逆时针,从十二点出发,朝向6点;文字不清楚的话,直接看上面的结果图
grep "chr[0-9]*A" karyotype.txt > karyotype_A.txt && grep "chr[0-9]*B" karyotype.txt | tac > karyotype_B_reversed.txt && cat karyotype_A.txt karyotype_B_reversed.txt > karyotype_combined.txt && rm karyotype_A.txt karyotype_B_reversed.txt- 手动调整一下颜色,格式部分
- 颜色表:grey,red,green,blue,purple,orange,yellow(circos,或者说我的这个镜像只有这几种颜色;嘛,颜色的部分,可以使用RGB进行添加,不过这里足够用了,而且调颜色也挺麻烦的)
- 下面就是使用命令行: cat /opt/circos-0.69-6/etc/colors.conf,理论上,加上RGB(三个数字),然后前方是颜色名字,定义,会在circos.conf中使用(毕竟直接打三串数字表麻烦)
- 增加空白染色体,创造切口;00A和00B的值不同,主要是希望00A+01A的长度等于00B+01B,这样切口不会偏;因为是从12点开始绘图的,所以1条辅助用的空白染色体是不行的。
- 作用:两条染色体分别占据周围位置,也就是12点旁边,设置的值足够小,刚好能够创造出一个缺口,用于塞入文本(编号)
- 来说一下这么说的理由吧:circos图,如果没有添加这两条空白染色体的话,就是一个封闭的圆,这样对后期想要标注每一个轨道是什么内容有些不利;虽说可以对svg矢量图进行操作,但成本太麻烦了,是真的麻烦,不然吾辈也不会被逼到相处这种方法。
chr - chr00A 00A 0 10000000 white
chr - chr01A 01A 0 42307625 orange
chr - chr02A 02A 0 48269694 green
chr - chr03A 03A 0 36713326 blue
chr - chr04A 04A 0 42079940 grey
chr - chr05A 05A 0 40778064 yellow
chr - chr06A 06A 0 38719974 red
chr - chr07A 07A 0 36753842 purple
chr - chr08A 08A 0 37031579 green
chr - chr09A 09A 0 38052585 grey
chr - chr10A 10A 0 37556265 blue
chr - chr11A 11A 0 35641978 orange
chr - chr12A 12A 0 31521390 yellow
chr - chr13A 13A 0 35518074 red
chr - chr13B 13B 0 32959892 purple
chr - chr12B 12B 0 31427665 green
chr - chr11B 11B 0 40081545 blue
chr - chr10B 10B 0 35472358 grey
chr - chr09B 09B 0 34044113 orange
chr - chr08B 08B 0 37940770 red
chr - chr07B 07B 0 36467240 yellow
chr - chr06B 06B 0 37315294 green
chr - chr05B 05B 0 37191466 purple
chr - chr04B 04B 0 38080824 blue
chr - chr03B 03B 0 37449219 red
chr - chr02B 02B 0 44370656 orange
chr - chr01B 01B 0 46071036 grey
chr - chr00B 00B 0 6236589 white- 创建circos.conf文件
- 需要准备好的基础配置文件:ideogram.conf,image.conf,/colors_fonts_patterns.conf,housekeeping.conf
- 这部分的文件配置,可以参考其他人的文档,博主都有基本的模版,然后塞给GPT写个大概也行,或者办照circos的样本配置文件,不过那个需要修修改改很多
- karyotype.txt:染色体的label,长度、颜色信息
- ideogram.txt:核型图用到的染色体厚度,间隔,lablel字体大小距离等等信息
- image.conf:输出图像的一些信息,比如保存为png图,svg图,绘制图形时的起始位置,颜色等等,还有名字
- colors_fonts_patterns.conf:忘了,应该是颜色相关的基础配置,毕竟没怎么改过,照搬套进去的
- housekeeping.conf:基础配置文件,和上面一样,照搬套用进去就可以了
karyotype = karyotype.txt
chromosomes_display_default = yes
<<include ideogram.conf>>
<image>
<<include image.conf>>
</image>
<<include /opt/circos-0.69-6/etc/colors_fonts_patterns.conf>>
<<include /opt/circos-0.69-6/etc/housekeeping.conf>>- 运行circos命令行
circos -conf circos.conf基因密度图
- 提取基因内容信息,3列内容
- 染色体编号,起始位置,终止位置
awk '$3=="gene" {print $1"\t"$4"\t"$5}' KNX_hap1_hap2_unanchor.gff3 > genes.txt- 转换成bin格式
- 直接用
awk脚本,把基因坐标分配到固定大小的 bin 里(比如 100 kb 一个 bin),并统计每个 bin 里有多少个基因: - 为了绘制 Circos 的基因密度图,需要将基因位置信息转换为固定区间(bin)内的基因数统计。这里我们将基因组按 100kb 的窗口切分,每个 bin 内统计落入该区间的基因数。输出文件
genes.binned_density.txt包含四列:染色体、bin 起始、bin 终止和基因数,格式正好符合 Circos heatmap track 的输入要求,可以直接用于基因密度的可视化。 - 参考文献中的砀山梨的基因组设置的bin区间为200kb
- 这里考虑到heatmap图的显示效果,改为100kb
- 区间的划分影响结果图的效果;区间切的越大,这个区间内的密度越高,颜色显示上会越深(不过这个可以选择调整);但是,反过来,如果原本密度就比较小,区间还企鹅的比较大的话,以heatmap图为例,看起来就会比较分散,转换成line或者histogram图的话就更是没法看了,慎重划分就是了
- 直接用
BIN=100000 # 设置 bin 大小,这里是 100 kb
awk -v BIN=$BIN '
{
chrom=$1
gene_start=$2
gene_end=$3
# 计算基因跨越的第一个和最后一个 bin
first_bin=int((gene_start-1)/BIN)
last_bin=int((gene_end-1)/BIN)
# 把这个基因计入所有覆盖到的 bin
for(i=first_bin;i<=last_bin;i++){
start=i*BIN + 1
end=(i+1)*BIN
count[chrom":"start"-"end]++
}
}
END{
# 输出每个 bin 的统计结果
for(i in count){
split(i,a,":")
split(a[2],b,"-")
print a[1], b[1], b[2], count[i]
}
}
' genes.txt | sort -k1,1 -k2,2n > genes.binned_density.txt- 计算基因密度最大值和最小值
- 1-30
- 统计所有区间中的密度,得到最大值和最小值,用于设置heatmap中的max和min
- 这两者需要对应上,因为max和min,在颜色对应上分别是最深色和最浅色;如果max设置数值过小,那么超出这个数值的所有区间就会变成最深色,不利于circos渲染;反过来的话,就是密度都很低的情况了。
awk '{if(min=="" || $4<min) min=$4; if(max=="" || $4>max) max=$4} END{print "min="min, "max="max}' genes.binned_density.txt- 跑图
circos -conf circos.confTE密度图(tir & helitron)
- 提取tir和helitron转座子信息,和gene一样,染色体编号、起始和终止坐标
- 分成两个文件保存
# 提取 TIR 类型
awk '$3 ~ /TIR_transposon/ {print $1"\t"$4"\t"$5}' KNX.genome.final.fa.mod.EDTA.intact.gff3 > tir.txt
# 提取 Helitron 类型(注意大小写)
awk 'tolower($3) ~ /helitron/ {print $1"\t"$4"\t"$5}' KNX.genome.final.fa.mod.EDTA.intact.gff3 > helitron.txt
- 转换成bin格式
BIN=100000; awk -v BIN=$BIN '{chrom=$1; s=$2; e=$3; fb=int((s-1)/BIN); lb=int((e-1)/BIN); for(i=fb;i<=lb;i++){st=i*BIN+1; en=(i+1)*BIN; c[chrom":"st"-"en]++}} END{for(k in c){split(k,a,":"); split(a[2],b,"-"); print a[1], b[1], b[2], c[k]}}' tir.txt | sort -k1,1 -k2,2n > tir.binned_density.txt
BIN=100000; awk -v BIN=$BIN '{chrom=$1; s=$2; e=$3; fb=int((s-1)/BIN); lb=int((e-1)/BIN); for(i=fb;i<=lb;i++){st=i*BIN+1; en=(i+1)*BIN; c[chrom":"st"-"en]++}} END{for(k in c){split(k,a,":"); split(a[2],b,"-"); print a[1], b[1], b[2], c[k]}}' helitron.txt | sort -k1,1 -k2,2n > helitron.binned_density.txt
- 计算最大值和最小值
- tir:1-12
- helitron:1-2
- 写入circos.conf配置文件
awk '{if(min=="" || $4<min) min=$4; if(max=="" || $4>max) max=$4} END{print "min="min, "max="max}' tir.binned_density.txt
awk '{if(min=="" || $4<min) min=$4; if(max=="" || $4>max) max=$4} END{print "min="min, "max="max}' helitron.binned_density.txt- 跑图
circos -conf circos.confLTR密度图(copia & gypsy)
- 提取这两类重复序列的染色体编号,起始和终止位置信息
# 提取 Copia
awk '$3=="Copia_LTR_retrotransposon"{print $1"\t"$4"\t"$5}' KNX.genome.final.fa.LTR.gff3 > copia.txt
# 提取 Gypsy
awk '$3=="Gypsy_LTR_retrotransposon"{print $1"\t"$4"\t"$5}' KNX.genome.final.fa.LTR.gff3 > gypsy.txt- 上面的提取命令的原理
- 根据第三列的内容,是否是Copia_LTR_retrotransposon或者Copia_LTR_retrotransposon提取指定行内容三项
- 具体的提取命令行还是需要根据文件进行设置,简单的方法就是截取一段足够多的注释信息(这里为例),丢给GPT让它帮忙写,稍微带点指示性的语言辅助
- 转换成bin格式
BIN=100000; awk -v BIN=$BIN '{ chrom=$1; start=$2; end=$3; first_bin=int((start-1)/BIN); last_bin=int((end-1)/BIN); for(i=first_bin;i<=last_bin;i++){ bin_start=i*BIN + 1; bin_end=(i+1)*BIN; count[chrom":"bin_start"-"bin_end]++ } } END{ for(i in count){ split(i,a,":"); split(a[2],b,"-"); print a[1], b[1], b[2], count[i] } }' copia.txt | sort -k1,1 -k2,2n > copia.binned_density.txt
BIN=100000; awk -v BIN=$BIN '{ chrom=$1; start=$2; end=$3; first_bin=int((start-1)/BIN); last_bin=int((end-1)/BIN); for(i=first_bin;i<=last_bin;i++){ bin_start=i*BIN + 1; bin_end=(i+1)*BIN; count[chrom":"bin_start"-"bin_end]++ } } END{ for(i in count){ split(i,a,":"); split(a[2],b,"-"); print a[1], b[1], b[2], count[i] } }' gypsy.txt | sort -k1,1 -k2,2n > gypsy.binned_density.txt- 计算最大值和最小值
- copia:1-59
- gypsy:1-120
awk '{if(min=="" || $4<min) min=$4; if(max=="" || $4>max) max=$4} END{print "min="min, "max="max}' copia.binned_density.txt
awk '{if(min=="" || $4<min) min=$4; if(max=="" || $4>max) max=$4} END{print "min="min, "max="max}' gypsy.binned_density.txtGC含量密度图
- samtools生成基因组索引文件
samtools faidx KNX_hap1_hap2.genome.fa- 用
bedtools把基因组切分成固定窗口,100 kb:
bedtools makewindows -g KNX_hap1_hap2.genome.fa.fai -w 100000 > windows.bed- 用
bedtools nuc计算每个窗口的 GC 百分比:
bedtools nuc -fi KNX_hap1_hap2.genome.fa -bed windows.bed > gc_raw.txt- 提取并整理成circos的输入格式,只保留 chr、start、end、GC% 四列:
awk 'NR>1 {printf "%s\t%s\t%s\t%.2f\n", $1, $2, $3, $5}' gc_raw.txt > gc_content.txt- 计算gc含量的最大值和最小值
- min=0.34和max=0.52
- GC含量值的设定和上面的不同,上面的几种密度图在circos图里面的min全是0,对应的最浅色也是white,但是GC含量的最小值是0.34,这是仿照文献参考来设置的
awk '{if(min=="" || $4<min) min=$4; if(max=="" || $4>max) max=$4} END{print "min="min, "max="max}' gc_content.txt伪数据制作背景图(gypsy & GC)
- 上面也用到过,就在核型图那一部分内容,首尾各插入两个多余的染色体,颜色为white,和背景色相同,所以等于没有;因此,这一部分就会出现一个缺口,用于后续添加label
- 这里也一样,这里的两份伪数据是为了增加gypsy和gc的背景图,因为这两个在circos图里面是histogram和line,两圈线条,为了提升一些美感,用伪数据在它们的下方增加一个heatmap图,颜色紫色,最浅色;渲染顺序是先背景图后真实数据,在circos.conf文件中的顺序是从上到下,不然真实数据图会被覆盖
awk '{ $4=1; print }' gypsy.binned_density.txt > gypsy.binned_density.bg.txt
awk '{ $NF=1; print }' gc_content.txt > gc_content.bg.txt运行程序
circos -conf circos.conf配置文件
circos.conf(终版)
可以参考一下,内容挺多的,但是除了基础配置以外,其余的plot部分基本是相同的规则批量复制出来的,也就是内环外环、颜色、min和max以及图样式稍微修改了一点
karyotype = karyotype.txt
chromosomes_units = 1000000
chromosomes_display_default = yes
<<include ideogram.conf>>
<<include ticks.conf>>
<plots>
# 基因密度 heatmap
<plot>
type = heatmap
file = genes.binned_density.txt
r0 = 0.9r
r1 = 0.95r
min = 0
max = 30
color = white,lblue,blue
</plot>
# TIR 转座子 heatmap
<plot>
type = heatmap
file = tir.binned_density.txt
r0 = 0.8r
r1 = 0.85r
min = 0
max = 12
color = white,green,vvdpgreen
</plot>
# Helitron 转座子 heatmap
<plot>
type = heatmap
file = helitron.binned_density.txt
r0 = 0.7r
r1 = 0.75r
min = 0
max = 2
color = white,purple,vvdppurple
</plot>
# 新增 Copia 转座子柱状图
<plot>
type = heatmap
file = copia.binned_density.txt
r0 = 0.6r
r1 = 0.65r
min = 0
max = 59
color = white,orange,vvdporange
</plot>
# 新增 Gypsy 背景图
<plot>
type = heatmap
file = gypsy.binned_density.bg.txt
r0 = 0.5r
r1 = 0.55r
min = 0
max = 1
color = white,vvlpurple
</plot>
# 新增 Gypsy 转座子柱状图
<plot>
type = histogram
file = gypsy.binned_density.txt
r0 = 0.5r
r1 = 0.55r
min = 0
max = 120
color = grey
fill_under = yes
</plot>
# 新增 GC 含量 背景图
<plot>
type = heatmap
file = gc_content.bg.txt
r0 = 0.4r
r1 = 0.45r
min = 0
max = 1
color = white,vvlpurple
</plot>
# 新增 GC 含量 line
<plot>
type = line
file = gc_content.txt
r0 = 0.4r
r1 = 0.45r
min = 0.34
max = 0.52
color = red
</plot>
</plots>
<image>
<<include /opt/circos-0.69-6/etc/image.conf>>
</image>
<<include /opt/circos-0.69-6/etc/colors_fonts_patterns.conf>>
<<include /opt/circos-0.69-6/etc/housekeeping.conf>>circos.conf(圈缩小版)
karyotype = karyotype.txt
chromosomes_units = 1000000
chromosomes_display_default = yes
<<include ideogram.conf>>
<<include ticks.conf>>
<plots>
# 基因密度 heatmap
<plot>
type = heatmap
file = genes.binned_density.txt
r0 = 0.94r
r1 = 0.98r
min = 0
max = 30
color = white,lblue,blue
</plot>
# TIR 转座子 heatmap
<plot>
type = heatmap
file = tir.binned_density.txt
r0 = 0.87r
r1 = 0.91r
min = 0
max = 12
color = white,green,vvdpgreen
</plot>
# Helitron 转座子 heatmap
<plot>
type = heatmap
file = helitron.binned_density.txt
r0 = 0.80r
r1 = 0.84r
min = 0
max = 2
color = white,purple,vvdppurple
</plot>
# 新增 Copia 转座子柱状图
<plot>
type = heatmap
file = copia.binned_density.txt
r0 = 0.73r
r1 = 0.77r
min = 0
max = 59
color = white,orange,vvdporange
</plot>
# 新增 Gypsy 背景图
<plot>
type = heatmap
file = gypsy.binned_density.bg.txt
r0 = 0.66r
r1 = 0.70r
min = 0
max = 1
color = white,vvlpurple
</plot>
# 新增 Gypsy 转座子柱状图
<plot>
type = histogram
file = gypsy.binned_density.txt
r0 = 0.66r
r1 = 0.70r
min = 0
max = 120
color = grey
fill_under = yes
</plot>
# 新增 GC 含量 背景图
<plot>
type = heatmap
file = gc_content.bg.txt
r0 = 0.59r
r1 = 0.63r
min = 0
max = 1
color = white,vvlpurple
</plot>
# 新增 GC 含量 line
<plot>
type = line
file = gc_content.txt
r0 = 0.59r
r1 = 0.63r
min = 0.34
max = 0.52
color = red
</plot>
</plots>
<image>
<<include /opt/circos-0.69-6/etc/image.conf>>
</image>
<<include /opt/circos-0.69-6/etc/colors_fonts_patterns.conf>>
<<include /opt/circos-0.69-6/etc/housekeeping.conf>>image.conf
我在circos.conf中用到的是/opt/circos-0.69-6/etc/image.conf,实际上,这个image.conf内容就两行,引用了其他的文档,而这里的image.conf就是把三个文档合并到一起
这里说一下circos.conf的写法好了:这个circos.conf能够一次性把所有内容都写进去,但也可以引用其他已经写好的文档,比如这个:include /opt/circos-0.69-6/etc/image.conf;相较于一次性往一个文档中塞一堆内容,后者的方式更灵活,也能够借鉴参考(复制使用)
background = white
dir = .
#dir = conf(configdir)
file = circos.png
png = yes
svg = yes
# radius of inscribed circle in image
radius = 1500p
# by default angle=0 is at 3 o'clock position
angle_offset = -90
#angle_orientation = counterclockwise
auto_alpha_colors = yes
auto_alpha_steps = 5ideogram.conf
基础配置文件,不可获取,主要是核型图相关配置
<ideogram>
show = yes
<spacing>
default = 0.005r # 染色体间的空隙
</spacing>
thickness = 25p # ideograms 的厚度
fill = yes # 填充颜色,由 karyotype 最后一列决定
radius = 0.8r # ideograms 位置
show_label = yes # 是否显示 label
label_font = default # label 字体
label_radius = dims(ideogram,radius_outer) + 80p # label 位置
label_size = 40p # label 字体大小
label_parallel = yes # label 方向
</ideogram>ticks.conf
这个是和刻度相关的,感觉丢掉也没关系,至少在我这张图里面没有用到
如果要用的话也可以加上,但是circos图的官方example刻度图有点复杂,这里的是调整后的
how_ticks = yes # 是否显示 ticks
show_tick_labels = yes # 是否显示 ticks 的 labels
<ticks>
tick_label_font = light
radius = dims(ideogram,radius_outer) + 10p # ticks 位置
label_offset = 5p # ticks label 离 ticks 的距离
label_size = 20p # ticks label 字体大小
multiplier = 0.001 # ticks label 值的计算
color = black # ticks 颜色
thickness = 1p # ticks 厚度
<tick>
spacing = 50u # 每个刻度代表的长度
size = 12p # tick 长度
show_label = yes # 是否显示 tick label
</tick>
<tick>
label_separation = 1p
spacing = 5u
size = 7p
show_label = no
</tick>
</ticks>颜色表
已经写好的7中颜色,直接使用英文名就可以引用;理论上,自己把RGB的数字复制过来,也可以定义颜色进去;7中颜色选择有点少了
cat /opt/circos-0.69-6/etc/colors.conf报错信息及应对方案
- circos的默认配置有数据点数量的限制。默认是25000,因为这边有75260个基因坐标,超出默认的设置,所以需要修改housekeeping.conf这个文件中的max_points_per_track = 25000,把它设置为较大一些的数量。这里设置为10万。还有,这个好像是为了避免绘图过于拥挤或占用过多内存而设置的,如果是在服务器上应该没有问题。
- 这个应该不算是报错信息,在看到参考文献里面的circos图,TE密度这一块的时候,发现图里面存在明显的红色条带,然后问了GPT,影响因素有这几个
- heatmap中的max和min的设置,拿浅黄色、浅橙色和红色作为参考,min对应的是浅黄色、max对应的是红色;如果下降max的值,那么一个bin区间内需要达到max(红色)的要求就会降低,也会形成红色的条带
- bin的设置大小,这里是100kb,如果增大的话,条带状也会更加明显,不过这个影响应该不大
- 这里就是绘图时的参数设置了,max和min根据实际情况来设置,bin的区间大小的话,100kb也好200kb也好,多试两次就可以了;或者直接借鉴其他人的文献
- 利用微数据制作背景图的注意点
- 颜色要尽可能的浅,比如紫色(purple),就选择vvlpurple;
- 数据准备,要制作哪一个轨道的背景图,直接把那个轨道的数据复制一份,最后一列的数据全部改为单一值,比如1
- circos.conf设置,circos的渲染是从上到下,所以要把背景图的伪数据放在真实数据上面;比如我要制作TE的背景图,那就放在TE的真实数据上面就可以了
附件
排序前后的基因密度对比图
因为GPT说:circos对输入的karyotype和gene密度文件,好像不会自动校正;简单来说就是,如果karyotype的开头是单倍型B,gene文档的开头是单倍型A,那么单倍型A的基因密度图就会划到单倍型B上,所以画了两张图,排序前后的,确认后没有区别,所以这个不成立
一开始还是挺担心这个问题的,毕竟,如果排序不正确的话,图算是报废了;后面发现,这部分内容优化,circos图做的还是比较好的
- 首先,核型图排序后,后续的密度数据文件不用排序,只需要染色体编号对应好就可以了,也就是karyotype中的第三列内容(第四列是label,控制核型图字样显示);然后,circos渲染的时候自动校准
- 这个特点起始可以从结果图上看的出来,有两点。一点,这次是会用的基因注释文件中,除了26个染色体以外,还有unchor的注释,但这部分没有出现;第二,在设置空白染色体创造切口后,后续的密度图绘制也没有这两个染色体的分,因为没有数据;反过来,如果和最开始担心的那样,渲染是按照顺序进行的话,那么上面两点应该不成立。
用的命令行
while read chr; do
grep -w "^$chr" genes.binned_density.txt
done < chr_id.txt > genes_binned_sorted.txt- 排序前
- 排序后
排序对比图2
正好这里有一个染色体重新排位后的,也可以比较参考一下,这个比较明显,可以看到gene等其他密度是随着染色体进行附着变化,多余的unchor部分也没有加进去