对于links
而言,默认情况下所有的links 都是同一种颜色,通过color
属性指定。当我们想要构建出彩色的links 时,通常情况下有3种做法:
1. 拆分file
每一个link
都有一个file
指定的数据,我们可以人为的将原来的file
根据条件拆分成多份,每一份对应一个link, 然后为每个link
设置不同的颜色,就可以实现彩色的link
了。
示例如下:
每个link
定义一个文件,对应的color
值不同,生成的图片如下
2. 定义rules
拆分数据比较繁琐,一种更加简便的方法是定义rules
, 根据不同的规则指定不同的颜色。示例如下
需要理解的就是condition
的写法。第一种就是var
的用法,var
获取指定字段的值,在links
中,有以下几种字段
-
CHRn
表示link
对应的染色体的名字,一个link
连接两个区域,第一个区域对应的染色体为chr1
, 第二个区域对应的染色体为chr2
,condition
中对应的写法为var(chr1)
,var(chr2)
-
STARTn
表示区域的起始位置,第一个区域的起始位置为start1
, 第二个区域对应的起始位置为start2
,condition
中对应的写法为var(start1)
,var(start2)
-
ENDn
表示区域的终止位置,第一个区域的终止位置为end1
, 第二个区域对应的终止位置为end2
,condition
中对应的写法为var(end1)
,var(end2)
-
POSn
表示区域的中心点的位置,第一个区域的中心位置为position1
, 第二个区域对应的中心位置为position2
,condition
中对应的写法为var(position1)
,var(position2)
-
SIZEn
表示区域的长度,第一个区域的长度为size1
, 第二个区域对应的长度为size2
,condition
中对应的写法为var(size1)
,var(size2)
-
REVn
判断某个区域是否反向,如果起始位置大于终止位置,代表是反向的,返回值为1,否则返回值为0,condition
中对应的写法为var(rev1)
,var(rev2)
-
INV
如果一个link连接的两个区域方向不同,一个正向,一个反向,返回值为1,其他情况返回值为0,condition
中对应的写法为var(inv)
-
INTERCHR
如果一个link连接的两个区域位于两条染色体上,返回值为1,其他情况返回值为0,condition
中对应的写法为var(interchr)
-
INTRACHR
如果一个link连接的两个区域位于同一条染色体上,返回值为1,其他情况返回值为0,condition
中对应的写法为var(intrachr)
var
会返回对应的值,从上面可以看出,返回值可以分成以下3类
-
字符串
-
数字
-
逻辑值
对于字符串,采用perl
当中的字符串操作符,示例
condition = var(chr1) eq “hs1”
对于数字,采用数字操作符, 示例
condition = var(size1) > 10mb
对于逻辑值, 可以直接使用,示例
condition = var(intrachr)
除了使用var 之外,还可以使用函数,condition
中支持以下函数
-
conf
-
on
-
within
-
between
-
fromto
-
tofrom
-
from
-
to
-
chrlen
在links
中,支持between
的用法, 示例如下
condition = between(hs1, hs2)
rules
的示例:
生成的图片如下:
3.在file中添加属性
file
文件支持内置属性和自定义属性,所有的属性写在最后一列,多个属性用逗号分隔。
示例如下:
上面的文件中,最后一列包含了color
和value
两种属性,color
是内置属性,value
是自定义属性。通过在file
中添加不同取值的color
属性,可以方便的实现彩色的links
。这里主要看下通过value
属性的值映射到不用颜色上。
配置文件写法如下:
通过var(value)
获取每个link的value 值作为数组的下标,数组由qw
定义,数组中的元素为5个不同的颜色,value
的取值范围为0-5,正好对应该数组的下标,通过这种方式,将value
映射到颜色上;而且在原来颜色的基础上,还通过sprintf
函数,为原来的颜色添加_a3
后缀,这个后缀代表一定的透明度。
生成的图片如下
根据自己的数据,灵活运用以上3种方法,就可以随心所欲的构建多彩的 links
了。
网友评论