circos 学习手册(七)
ideogram(二)
2、ideogram 过滤
核型文件通常定义了基因组中的所有染色体,使用过滤器可以选择性的绘制染色体
通过设置 chromosomes 和 chromosomes_display_default 参数
2.1 选择性显示染色体
默认情况下,会将任何未明确排除的染色体按照核型文件中定义出现的顺序显示出来,
想要选择显示的染色体,可以设置
chromosomes_display_default = no
然后,使用 chromosomes 参数接收要显示的染色体列表
chromosomes = hs1;hs2;hs3;h4
或者,使用正则表达式
chromosomes = /hs[1-4]$/
也可以二者结合使用
chromosomes = /hs[1-4]$/;hs10;hs11
注意:这里加了一个 $,表示结尾,所以不会匹配 10,11,...,20,...,22
2.2 选择性隐藏染色体
将 - 作为前缀,放在你不想绘制的染色体 id 前面
chromosomes = /hs[1-4]$/;-hs3
注意:在这里,我们指定的染色体列表的分隔符是 ;,而不是 ,,因为不仅可以指定染色体,还可以包含要绘制的染色体区域列表
chromosomes = hs1:(-100,120-);hs2;hs3;h4
用 ( 表示染色体的起始端,用 ) 表示染色体的末端
注意:在这里,1 号染色体绘制区域为 0-100u 和 120u到末尾,u 为染色体单位,可以设置
chromosomes_units = 1000000
表示 1u 等于 1000000 个碱基长度
如果你只想隐藏几条染色体,其他染色体都要绘制,可以
chromosomes = -hs1;-hs2;-hs3
chromosomes_display_default = yes
这种方式,除了不绘制 1-3 号染色体,其他染色体都会按顺序绘制,如何改变绘制顺序呢
3、ideogram 顺序
在特定情况下,你可能想通过重新排列 ideogram 的顺序来凸显它们之间的关系
3.1 默认顺序
ideogram 的默认显示顺序是按照核型文件中出现的顺序,而 chromosomes 参数所指定的染色体不会影响显示顺序
可以通过参数 chromosomes_order 设置显示顺序
3.2 自定义顺序 —— 绝对顺序
指定顺序的最简单方法就是列出新的顺序
chromosomes = hs1;hs2;hs3;hs4;hs5;hs6;hs7;hs8
chromosomes_order = hs2,hs3,hs1,hs5,hs4,hs8,hs7,hs6
新顺序: 2 3 1 5 4 8 7 6
image.png
如果你要显示的染色体数量很少,或者需要固定使用这种顺序,可以使用这种方法
但是如果要指定一条染色体相对于另一条染色体的位置来调整,需要对 chromosomes_order 参数使用更复杂的语法
3.3 自定义顺序 —— 相对顺序
你可以通过指定局部顺序来调整染色体子集的顺序,如
chromosomes_order = hs5,hs4
新的顺序:1 2 3 6 5 4 7 8
你可能会感到惊讶,为啥 6 排在 5 的前面
当 circos 解析相对顺序时,如 hs5,hs4,首先找到第一条命名的染色体 hs5,然后将其作为定位顺序表中的锚点。由于 hs4 指定在 hs5 之后,因此 circos 会将 hs4 紧接在 hs5 之后,但不会移动 hs5 的位置,所以 hs4 的位置被吓一跳染色体 hs6 取代
想要将得到 1 2 3 5 4 6 7 8 的顺序,需要使用 hs3 作为锚点
chromosomes_order = hs3,hs5,hs4
记住,在顺序列表中第一条染色体名称会作为锚点,应该对应于你不想移动的染色体,而列表中剩余的染色体将相对于锚点重新定位
3.4 自定义顺序 —— 相对顺序的间隔
你可以在顺序列表中使用 - 来指示下一个可用的染色体,而省略染色体 ID。
在这里,“下一个”的含义与默认顺序有关
通配符 - 的目的就是为了在染色体排序方面提供更多的灵活性,例如,指定 hs2 为 hs3 之后的下一个邻居
chromosomes_order = hs3,-,hs2
新的顺序:4 5 3 1 2 6 7 8
是不是又觉得有点奇怪了,这是什么情况?
首先,以 hs3 作为锚点,所以 hs3 的位置不变,还是第三,而下一条染色体是 -,用于指示下一条可用的染色体或 hs1,因为 hs1 是这个顺序列表中没有特意提及的第一个条染色体。因此 hs3 后面的局部顺序为 hs3,hs1,hs2。因为 hs3 是第三个,所以前面两个位置被 hs4,hs5 取代
如果你想用两个通配符来分隔 hs3 和 hs2,可以
chromosomes_order = hs3,-,-,hs2
产生的顺序是,5,6,3,1,4,2,7,8
先将 hs1 填进去,然后是 hs4,锚点为 hs3,所以前两个为 hs5,hs6
当输入
chromosomes_order = hs2,-,-,hs3
顺序将是:5,2,1,4,3,6,7,8
你也可以在通配符之间插入特定的染色体
chromosomes_order = hs1,-,hs2,-,hs3
得到的顺序是:1,4,2,5,3,6,7,8
通配符由第一个可用的未被指定顺序的染色体填充,就是 hs4,hs5
你也可以将通配符作为第一个顺序,将染色体优先填充到锚点之前,例如
chromosomes_order = -,hs1,-,hs2,-,hs3
顺序为:4,1,5,2,6,3
3.5 自定义顺序 —— 锚点
除了 - 通配符外,你还可以使用两个附加的元字符:^ 和 $,代表圆形图的开始和结束
因此,如果想让 hs5 作为第一条染色体,就可以
chromosomes_order = ^,hs5
顺序为:5,1,2,3,4,6,7,8,如果想让 hs5 出现在末尾
chromosomes_order = hs5,$
顺序变成:1 2 3 4 6 7 8 5
3.6 自定义顺序 —— 多组+顺序
可以使用 | 指定多个顺序分组的分隔符,每个分组通过其锚点影响局部顺序
考虑如下顺序字符串
chromosomes_order = hs3,hs2,|,hs8,hs1
注意:| 将 hs3,hs2 和 hs8,hs1 两组分开,第一组的锚点是 hs3,第二组的锚点是 hs8,最后的顺序是:4,5,3,2,6,7,8,1
使用多组时,通配符可以增加额外的灵活性
chromosomes_order = hs3,-,hs2,|,-,hs8,hs1
每组按照出现顺序独立发挥作用,因此,第一个通配符由 hs4 替换,而第二组中的通配符由 hs5 替换,最后的顺序是:6,7,3,4,2,5,8,1
3.7 自定义顺序 —— 多组+锚点
最后,你可以将通配符,多组和锚点组合在一个字符串中,快速生成复杂的顺序字符串
chromosomes_order = ^,-,hs5,hs2,|,hs4,hs3,|,hs7,$
最后的顺序为:1,5,2,4,3,6,8,7
在构造具有多个组,通配符和锚点的字符串时,每个规则必须满足条件,否则会导致错误,例如,下面的字符串至少需要 8 条染色体
chromosomes_order = ^,-,hs5,hs2,|,hs4,-,-,hs3,|,hs7,$
产生的顺序为:1 5 2 4 6 8 3 7,然而,如果添加了一个或多个通配符
chromosomes_order = ^,-,hs5,hs2,|,hs4,-,-,-,hs3,|,hs7,$
将会得到如下的错误
fatal error - chromosomes_order string cannot be processed because group hs7
cannot be placed in the display. This may be due to more tags in
the chromosomes_order field than ideograms.
(未完待续...)