circos 学习手册(二十七)

技巧(二)

6. 复杂直方图

6.1 直方图填充

可以使用如下规则,基于直方图的 bin 值更改其填充色

# remap the histogram value from the range [-0.6,0.6] onto the index [0,5], then
# use the index to select the color from the list
# dorange orange lorange lblue blue dblue
# 
# Perl syntax for referencing an element of a list is qw(a b c d)[index]
# where index starts at 0.
<rule>
condition  = 1
fill_color = eval(qw(dorange orange lorange lblue blue dblue)[remap_int(var(value),-0.6,0.6,0,5)])
</rule>

6.2 分层背景色和宏

在这个例子中,我们为具有六个颜色层的直方图创建一个背景:蓝色代表正值,橙色代表负值。

背景中的每个颜色层都由其自己的 <background> 块定义

<plot>
...
# define background color cutoffs
bgy1 = 0.2    # first cutoff
bgy2 = 0.5    # second cutoff
bgc1 = orange # bg color for negative values
bgc2 = blue   # bg color for positive values
...

<backgrounds>
# use the parameters above using conf(.,param)
<background>
color = lconf(.,bgc2)
y0    = conf(.,bgy2)
</background>
<background>
color = vlconf(.,bgc2)
y1    = conf(.,bgy2)
y0    = conf(.,bgy1)
</background>
<background>
color = vvlconf(.,bgc2)
y1    = conf(.,bgy1)
y0    = 0
</background>
<background>
color = vvlconf(.,bgc1)
y1    = 0
y0    = -conf(.,bgy1)
</background>
<background>
color = vlconf(.,bgc1)
y1    = -conf(.,bgy1)
y0    = -conf(.,bgy2)
</background>
<background>
color = lconf(.,bgc1)
y1    = -conf(.,bgy2)
</background>
</backgrounds>

</plot>

6.3 y 轴网格和宏

轴网格也可以引用直方图的 cutoff

<axes>

# every 25% with low transparency
<axis>
color     = grey_a1
thickness = 2
spacing   = 0.25r

# every 5% with higher transparency
<axis>
color     = grey_a3
thickness = 1
spacing   = 0.05r
</axis>

# thick line at y=0
<axis>
color     = grey_a1
thickness = 5
position  = 0
</axis>

# at each background cutoff, a thick white line
<axis>
color     = white
thickness = 5
position  = -conf(.,bgy2),-conf(.,bgy1),conf(.,bgy1),conf(.,bgy2)
</axis>

</axes>

7. link 终端可变半径

使用数据文件或者规则,可以独立地操纵 link 的每一端的径向位置。可以应用在将 link 的端点移动到另一个数据轨迹。

这是通过设置 radius1radius2 的值来实现的,分别代表 link 的第一个数据点和第二个数据点的径向位置

第一种方法是将半径值与一端或两端关联

hs1 486 76975 hs15 100263879 100338121 radius1=0.5r
hs1 342608 393885 hs15 100218755 100268630 radius2=0.5r
hs1 576306 626811 hs15 100218755 100268630 radius=0.75r

未定义半径的 link 的端点,将使用 <links><link> 块中的 radius 参数值

第二种方法,使用 rule 并设置 radius1radius2 变量

<rules>

# if a rule is triggered, continue testing with other rules
flow       = continue

# remap the color of the link to the first chromosome
<rule>
condition  = 1
color      = eval(sprintf("%s_a4",var(chr1)))
</rule>

# Alter radial position of one or both ends of a link, depending
# on its position. The function on(RX) tests whether a link
# is on a chromosome matching the regular expression RX.

# to/from hs1
<rule>
# the trailing $ (end of string anchor) is required so that 
# chromosome names like hs10, hs11, hs12, etc don't match
condition  = on(hs1$)
radius     = 0.85r
</rule>

# to hs10, hs11 or hs12
<rule>
condition  = to(hs1[012])
radius2    = 0.75r
</rule>

# from hs10, hs11, hs12
<rule>
condition  = from(hs1[012])
radius1    = 0.75r
</rule>

# from hs14 and has start beyond 100mb
<rule>
condition  = from(hs14) && var(start1) > 100mb
radius1    = 1r+50p
z          = 5
thickness  = 3
color      = blue
</rule>

# to hs5 and has end within 50mb of position 100mb
<rule>
condition  = to(hs5) && abs(var(start2) - 100mb) < 50mb
radius2    = 1r+50p
z          = 5
thickness  = 3
color      = red
</rule>

</rules>

8. 堆积直方图

8.1 堆积数据集

堆积直方图是直方图轨迹的扩展,要绘制堆积直方图,只需要在数据文件中每个直方图设置一系列的值

...
hs7 65000000 69999999 0.388090,0.070074,0.547485,0.842239,0.525658
hs7 70000000 74999999 0.886542,0.321023,0.145677,0.897684,0.264217
hs7 75000000 79999999 0.854199,0.567889,0.574767,0.656331,0.418385
hs7 80000000 84999999 0.286509,0.201049,0.552485,0.876529,0.999801
hs7 85000000 89999999 0.154836,0.515471,0.389453,0.440168,0.475127
...

第一个值绘制在底部,然后是第二个值,以此类推。

8.2 格式化堆积数据集

可以通过制定一个逗号分隔的列表为每个数据集制定单独的格式参数(color, thickness fill_color, pattern

例如,为每个数据集填充不同的颜色,可以设置 fill_color 提供 5 个不同的值

fill_color = red,orange,yellow,green,blue

如果提供的值较少,则会循环使用

指定颜色和厚度

color      = white
fill_color = red,orange,yellow,green,blue
fill_under = yes
thickness  = 1,2,3,4,5

8.3 颜色和模式

你可以独立循环 bin 的颜色和模式

fill_color = red,grey,black
pattern    = checker,solid

将会创建以下 bins

  color  pattern
  red    checker
  grey   solid
  black  checker
  red    solid
  grey   checker
  black  solid
  ...    ...

8.4 调整堆叠次序

默认情况下,堆叠顺序是按照数据值在文件中出现的顺序,因此,对于颜色列表

fill_color = red,orange,yellow,green,blue

以及数据行

hs1 0 4999999 0.237788,0.291066,0.845814,0.152208,0.585537

将按照如下顺序堆叠

  • 0.237788 (red)
  • 0.291066 (orange)
  • 0.845814 (yellow)
  • 0.152208 (green)
  • 0.585537 (blue)

当设置

sort_bin_values = yes

将会按照降序值堆叠

  • 0.845814 (yellow)
  • 0.585537 (blue)
  • 0.291066 (orange)
  • 0.237788 (red)
  • 0.152208 (green)

9. 透明 link

下面我们将介绍如何使用颜色透明度改善 link 的布局。

9.1 使用 z-depth

如果你有许多重叠的 link,可以使用 z-depth 值将重要的 link 绘制在前面

<rules>
<rule>
condition  = 1
z          = eval( scalar min(var(size1),var(size2) ) )
</rule>
</rules>

但是 link 遮挡的问题依然存在

9.2 定义透明颜色

定义透明颜色,可以在 rgb 颜色值后面添加一个透明度值,该值介于 0(不透明)-127(完全透明) 之间。

<<include colors_fonts_patterns.conf>>
<colors>
blackweak = 0,0,0,100
</colors>

透明度为 100/127,当在白色上绘制是,blackwisergb 值为 200,200,200,当为 link 指定这个颜色之后

<link>
ribbon = yes
color  = blackweak
...
</link>

色带将是透明的。透明度 79%

9.3 自动定义颜色透明度

默认情况下,circos 为每种颜色定义了 5 个透明度级别。

每种颜色(如纯红色 pred=255,0,0),将产生 5 种新的颜色定义 pred_a1, pred_a2, pred_a3, pred_a4, 和 pred_a5,每种 _aN 颜色具有透明度 N/(5+1)。即

  • pred_a1 - 17%
  • pred_a2 - 33%
  • pred_a3 - 50%
  • pred_a4 - 67%
  • pred_a5 - 83%

注意:没有定义 pred_a0,因为 pred 已经存在其定义。pred_a5 不是 100% 透明。

<link>
ribbon = yes
color  = black_a5 # black with 83% transparency
...
</link>

你可以使用 auto_alpha_steps 更改图像的透明度变化步数

<image>
<<include etc/image.conf>>
# overwrite auto_alpha_steps from default value included in etc/image.conf
auto_alpha_steps* = 10
</image>

9.4 用 rule 添加透明度

通过使用规则,可以很容易的更改颜色透明度

对于随机生成的数据

e.g.
hs7 127586339 141410899 hsY 30737607 31414129

使用如下规则为每个 link 定义一个由三个组件派生的颜色:亮度前缀、染色体名称和透明度后缀

<rule>
condition = 1
# derive the color name from the chromosome name
# lum80 + chr_name + _a2
#
# lum70*, lum80* and lum90* colors are normalized
# to a given luminance and are predefined at etc/colors.ucsc.conf
#
# _a2 adds transparency (2/6 = 33%) where the denominator
# is derived from auto_alpha_steps+1=6
color     = eval(lc sprintf("%s%s_a%d",'conf(luminance)',var(chr1),4))
</rule>

使用这一规则,所有 link 颜色名称都会被修改。

使用 conf() 函数获取 luminance 参数的值,这一参数可以在配置文件开头定义,也可以通过命令行 -param 修改它的值

> circos -param luminance=lum70

9.5 染色体颜色

从染色体的名称及 luminance 前缀设置染色体的颜色

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

推荐阅读更多精彩内容