https://wenlongshen.github.io/2017/03/26/Circos-3/

基本配置做好,接下来就是将各种各样的数据整合进circos环图里了,本章主要介绍links、highlights、text数据作图。

Links

Links主要试图利用连线关系,表明染色体上不同位置之间的联系。这在实际生物学问题中很常用,因为基因组往往在功能调控、空间结构上存在相互作用关系,而网络图就是最佳的展示方式之一。

我们可以利用<<include>>单独引入links配置文件,也可以在主配置文件circos.conf中添加<links>模块来实现这一功能:

show_links   = yes
<links>
# 调用show_links的值
show        = conf(show_links)
# Circos提供两种link方式,一种是bezier适合点对点连线,一种是ribbon适合片对片链接
ribbon      = yes
# ribbon的画法是start1->end1->end2->start2,故可能出现twist,设置flat = yes取消twist
# 同样地,可以设置twist = yes强行制造twist
flat        = yes
# links的起始终止位置
radius      = 0.45r-55p
# Circos提供bezier_radius、crest、bezier_radius_purity等参数来控制link的弯曲形式,具体见下图
# 若希望设置为undef,建议在<link>子模块中设置
bezier_radius   = 0r
color       = black_a5
# 对于ribbon,还可以通过stroke_color和stroke_thickness来设置边缘<link>
# 指定数据文件位置
file        = data/links.txt# 这里不额外讲rules的使用方法,举些例子供参考吧
<rules>
<rule>
# 只有link数据才存在chr、size等前缀+1、2的情况
# 表示当size1(link起始结点)的大小小于1Mb时
condition   = var(size1) < 1e6
# 符合上述条件的link线不显示
show        = no
</rule>
# 注意这里,Circos中是从前至后依次进行rule判断的,若满足第一个rule,则不继续判断后续rule了
# 可通过flow参数改变这一规则
<rule>
# 这里相当于总为true
condition   = 1
# eval表示赋值
# 这里即把chr2(link末端结点)的染色体名称去掉前两个字母后,组合进"chr%s_a3",再赋给color
color       = eval(sprintf("chr%s_a3",substr(var(chr2),2)))
# remap表示取值范围映射,这里即把size2(link末端结点)的值由[0,10e6]映射至[0,-100],然后赋给z
z           = eval(remap_int(var(size2),0,10e6,0,-100))
</rule>
</rules>
</link></links>

这里看一下官网提供的关于曲线弯曲设置的示意图: Circos很有意思地提供了perturb等参数,它们在指定范围内随机取值,从而可以让不同<link>子模块随机呈现不同曲线效果:

# 设置是否使用perturb
perturb         = yes
# 设为0表示不使用perturb
perturb_crest           = 0
# new_value = value * [ pmin + (pmax-pmin)*urd ],其中urd在[0,1)间平均分布
perturb_bezier_radius       = 0.5,1.2
perturb_bezier_radius_purity    = 0.5,1

接下来,我们看一下links模块的展示效果:

Highlights

高亮显示是一个很常用的功能,在Circos中,你既可以用它来标注感兴趣的不同区域,也可以仅仅用来装饰整个环图。Highlight包括两种使用方式,一种是利用<highlights>模块,再一种是设置type = highlight<plot>子模块。从图形展示的角度来说区别不大,唯一就是<highlights>模块所呈现的数据在其它数据层的下面,<plot>模块则反之。不过<highlights>模块还有个方便之处,是可以更好地设置在染色体上显示(利用ideogram = yes,而不需设置r0和r1,从而显示得更完美)。

Highlight的基本数据格式只需要染色体名称和起始终止位置即可,也可以通过补充设置fill_color、r0、r1等覆盖默认值,达到特殊显示的需要。下面,我们设置两个type = highlight<plot>子模块作为例子:

show_highlights  = yes
<plots># highlight1
<plot>
show            = conf(show_highlights)
# 表示这是一个highlight类型的plot
type            = highlight
# 指定数据文件位置
file            = data/highlights.txt
# highlight区块的内外半径,实际不严格区分哪个在内哪个在外
r0          = 1r+180p
r1          = 1r+181p
# 边缘的颜色、粗细
stroke_color        = black
stroke_thickness    = 1
# 填充色
fill_color      = red
</plot># highlight2
<plot>
show            = conf(show_highlights)
type            = highlight
file            = data/highlights.txt
r0          = 0.45r-50p
r1          = 0.45r-45p
# 通过rules,设置颜色和karyotype保持一致
<rules>
<rule>
# Circos使用Perl语法规则,这里即正则表达式
# 设置所有人类染色体的颜色
condition       = var(chr) =~ /hs/
fill_color      = eval(lc sprintf("chr%s",substr(var(chr),2)))
</rule>
# 设置小鼠染色体的颜色
<rule>
condition       = var(chr) =~ /mm/
fill_color      = blues-5-seq-4
</rule>
# 设置大鼠染色体的颜色
<rule>
condition       = var(chr) =~ /rn/
fill_color      = reds-5-seq-4
</rule>
</rules>
</plot></plots>

下面是展示效果,可以看到,这里就仅仅利用highlight模块作为装饰:

Text

基因组数据的分析和作图少不了对一些区域进行注释,所以text的显示是很重要的内容。Text是一个type = text<plot>子模块,其基本数据格式除了要求染色体名称和起始终止位置外,还应有value一栏,即text的内容。下面例子使用了人类基因组中部分omim和cancer相关基因名称的数据。值得注意的是,通常在大量数据情况下,text不能完整显示,特别是邻近位置,所以对于text排版的设置尤为重要:

show_text        = yes
<plots><plot>
show            = conf(show_text)
# 表示这是一个text类型的plot
type            = text
file            = data/text.txt
color           = black
# 通过r0和r1来设定显示半径,这里r0为内,r1为外
r1          = 0.73r
r0          = 0.415r
label_size      = 9p
label_font      = condensed
# label之间径方向间隔
rpadding        = 0r
# label之间角方向间隔
padding     = 0r
# 为邻近或者同一位置的多个label设置snuggle显示方式
label_snuggle       = yes
# 这里的距离为角方向
max_snuggle_distance    = 1r
# 与snuggle排列显示相关的参数,值越大,计算速度越快,但准确性下降
snuggle_sampling    = 1
# 值越大,准确性越低
snuggle_tolerance   = 0.25r
# 这里的link是指引label的连线,具体见下图
show_links      = yes
link_dims       = 4p,2p,5p,2p,2p
link_thickness      = 2p
link_color      = grey<rules>
<rule>
# 为omim相关基因设置颜色
condition       = var(value) =~ /omim/
color           = blue
# 继续判断后续rule
flow            = continue
</rule>
<rule>
# 为cancer相关基因设置颜色
condition       = var(value) =~ /cancer/
color           = red
label_font      = bold
flow            = continue
</rule>
<rule>
condition       = 1
# 匹配正则表达式
value           = eval(replace(var(value),qr/_.*/,""))
</rule>
</rules>
</plot></plots>

我们首先看一下关于label的link参数设置: 最后看一下我们text模块的效果图: 这里有一个小技巧,text不止可以是文字,也可以是符号,如设置label_font = glyph,再将相应数据的value进行更改即可,比如可在上述配置中更改规则:

<rule>
condition   = var(value) =~ /cancer/
label_font  = glyph
value       = N
</rule>

{转载}circos绘图(3)相关推荐

  1. {转载}Circos绘图(1)

    转载至:https://wenlongshen.github.io/2017/03/19/Circos-1/ 由Martin Krzywinski等人开发的Circos,一出现便引起轰动,它打破了常规 ...

  2. {转载}circos绘图(2)

    https://wenlongshen.github.io/2017/03/22/Circos-2/ 本章主要对circos环图中最基本的元素进行设置,包括karyotype.ideogram.tic ...

  3. [转载]Matlab绘图-很详细,很全面(包含各种标示符的输入方法)

    原文地址:Matlab绘图-很详细,很全面(包含各种标示符的输入方法)作者:deman Matlab绘图-很详细,很全面 Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一 ...

  4. matlab画图高级,[转载]Matlab绘图系列之高级绘图

    1.彗星图 二维彗星图 三维彗星图 2.帧动画 3.程序动画 4.色图变换 5.Voronoi图和三角剖分 Voronoi图 三角剖分 6.四面体 7.彩带图 彩带图 三维流彩带图 8.伪彩图 9.切 ...

  5. matlab 控制命令,[转载]Matlab绘图基本控制命令

    图形的控制与表现 (Figure control and representation) MATLAB提供的用于图形控制的函数和命令: axis: 人工选择坐标轴尺寸. clf:清图形窗口. ginp ...

  6. matlab绘制曲线y=x3 x 1程序,[转载]Matlab绘图操作(1)

    1 二维数据曲线图 1.1 绘制单根二维曲线 plot函数的基本调用格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据. 例1 在0≤x≤2p区间内,绘制曲线 y= ...

  7. python画circos图_手把手教你画Circos图

    导读 Circos是一个由加拿大科学家Martin Krzywinski利用perl语言开发的用于描述关系型数据和可视化多维度数据的软件.Circos凭借输入简单,不需要太多的数据处理技巧就能调整到要 ...

  8. iMeta | 华南农大陈程杰/夏瑞等发布TBtools构造Circos图的简单方法

    点击蓝字 关注我们 定制Circos图:使用TBtools,从数据准备到可视化 https://onlinelibrary.wiley.com/doi/full/10.1002/imt2.35 ●20 ...

  9. matlab打开dat形式文件_matlab的各种数据读取(txt,dat,mat等格式),文件打开关闭...

    MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据:将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据.至于选择哪种机制,则根据下面两个因素决定: ● 用 ...

最新文章

  1. CentOS6.2解决passwd: Authentication token manipulation error报错
  2. html首字母样式,html标签手册
  3. mysql 5.7.12 修改密码
  4. Spring Boot的TestRestTemplate使用
  5. 解决express video 手机无法播放的问题
  6. html导出excel 内存不足,web导出excel那些坑
  7. 智能路由器-OpenWRT 系列三 (OpenWRT安装LuCI网络配置)
  8. C语言版回字四种写法的一个例子——数组下标访问
  9. 数十亿个 Wi-Fi 设备存在缺陷,通信易被窃听!
  10. 【USACO 1.3】Ski Course Design
  11. 转:imageNamed和dataWithContentsOfFile的区别
  12. java 迭代器复制_遍历聚合对象中的元素——迭代器模式(五):JDK内置迭代器的使用...
  13. 嗯,手搓一个TinyPng压缩图片的WebpackPlugin也SoEasy啦
  14. nmds与mds的区别_帮研网—科研共享平台——PCA、PCoA和NMDS有什么区别?
  15. 竞品分析:腾讯课堂vs中国大学MOOC(从用户体验五要素角度)
  16. error: Package requirements (sqlite3 > 3.7.4) were not met:
  17. Java truelicense 实现License授权许可和验证
  18. Oracle基本语法及例子
  19. 中央处理器——微程序
  20. https 自签名SSL证书

热门文章

  1. java-IOC(控制反转) 理论推导
  2. 商标注册计算机软件app属于第几类,软件商标属于第几类?
  3. 2020年全国大学生数学建模竞赛赛题 选题建议
  4. Harfbuzz version too old (1.2.1)
  5. Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合
  6. 【BZOJ-4316】小C的独立集 仙人掌DP + 最大独立集
  7. 2022年一级建造师考试《市政公用工程》练习题及答案(多选题)
  8. teradata中no more spool space
  9. 通过添加dns加速访问app store
  10. android打印动画,Android实用View系列------TextView实现打印机效果