对于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中支持以下函数
confonwithinbetweenfromtotofromfromtochrlen在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了。
---来自腾讯云社区的---生信修炼手册
微信扫一扫打赏
支付宝扫一扫打赏