欢迎关注微信公众号《生信修炼手册》!
对于links而言,默认情况下所有的links 都是同一种颜色,通过color属性指定。当我们想要构建出彩色的links 时,通常情况下有3种做法:
1. 拆分file
每一个link都有一个file指定的数据,我们可以人为的将原来的file根据条件拆分成多份,每一份对应一个link, 然后为每个link设置不同的颜色,就可以实现彩色的link了。
示例如下:
每个link定义一个文件,对应的color值不同,生成的图片如下
2. 定义rules
拆分原始数据的工作量比较大,一种更加简便的方法是定义rules, 根据不同的规则指定不同的颜色。示例如下
对于links而言,其file包含了以下字段的值
-
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了。