circos教程.docx

上传人:b****8 文档编号:10737642 上传时间:2023-02-22 格式:DOCX 页数:41 大小:3.34MB
下载 相关 举报
circos教程.docx_第1页
第1页 / 共41页
circos教程.docx_第2页
第2页 / 共41页
circos教程.docx_第3页
第3页 / 共41页
circos教程.docx_第4页
第4页 / 共41页
circos教程.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

circos教程.docx

《circos教程.docx》由会员分享,可在线阅读,更多相关《circos教程.docx(41页珍藏版)》请在冰豆网上搜索。

circos教程.docx

circos教程

rcos为了能准确地画出染色体示意图,染色体的定义,位置,大小,以及显示的形式都是circos需要考虑的。

这些要素需要在数据文件当中定义出来。

数据结构

染色体组型(karyotypes)是一类特殊的数据。

一般的,它保存在名为文件当中。

它将定义染色体的大小,ID,名称和颜色。

每一行一条染色体,格式如下:

chr-IDLABELSTARTENDCOLOR

最开始的chr表示,这一行将定义一个染色体。

然后是一个短线占位符。

这个占位符通常用来定义所属关系,对于染色体来说,没有所属。

ID是染色体唯一且不能重复的标识。

之后的LABEL是将来用于显示在图上的文本。

如果一个染色体组型文件里面包含多个不同来源的染色体组,设置ID最好的办法就是使用前缀。

比如hs=homosapiens,mm=musmusculus等等。

有时候你可以使用hs19做为前缀来明示数据来源版本。

其实,即使是只有一个来源的染色体组,也最好使用前缀,以规范文件格式。

START和END值定义了染色体的大小。

对于染色体组型文件,需要指明的是,这里的START和END应该是染色体本身的大小,而不是你想绘制部分的起止位置。

指定绘制部分将由其它文件来定义。

COLOR是于定义显示的颜色。

如果染色体组不以条纹(cytogeneticbands)图谱覆盖的话,那么就会以这里设置的颜色显示。

对于人类基因组而言,circos预设了与染色体相同的名字做为颜色名,比如chr1,chr2,…chrX,chrY,chrUn.

下面就是hg19的例子:

chr-hs1hs101chr1

chr-hs2hs203chr2

chr-hs3hs300chr3

chr-hs4hs406chr4

chr-hs5hs500chr5

chr-hs6hs607chr6

chr-hs7hs703chr7

chr-hs8hs802chr8

chr-hs9hs901chr9

chr-hs10hs1007chr10

chr-hs11hs1106chr11

chr-hs12hs1205chr12

chr-hs13hs1308chr13

chr-hs14hs1400chr14

chr-hs15hs1502chr15

chr-hs16hs160chr16

chr-hs17hs170chr17

chr-hs18hs180chr18

chr-hs19hs190chr19

chr-hs20hs200chr20

chr-hs21hs210chr21

chr-hs22hs220chr22

chr-hsxhsx00chrx

chr-hsyhsy0chry

一般的,我们都会在染色体组型文件当中加上条纹图谱的信息,这样才会让染色体图谱看上去有被染色的效果。

文件格式与之前的一致,也只有七列。

bandDOMAINIDLABELSTARTENDCOLOR

这里的DOMAIN就是染色体组型当中的ID就好了,其它的定义与前面的一致。

下面就是一个例子。

bandhs102300000gneg

bandhs123000005400000gpos25

bandhs154000007200000gneg

bandhs172000009200000gpos25

bandhs19200000gneg

bandhs1gpos50

bandhs1gneg

bandhs1gpos25

bandhs1gneg

bandhs1gpos25

bandhs1gneg

bandhs1gpos25

bandhs1gneg

bandhs1gpos25

bandhs1gneg

bandhs1p33p33gpos75

bandhs1gneg

bandhs1gpos50

bandhs1gneg

bandhs1gpos50

bandhs1gneg

bandhs1gpos100

bandhs1gneg

bandhs1gpos75

...

cytogeneticbands的名称例子:

其命名规则是之前的数字、字母为染色体代号,一般是数字或者X,Y。

而之后会有字母p或者q。

p代表短臂,q代表长臂。

而每个band都会有颜色深浅的不同,这里主要以gpos和gneg来区别。

为了和真实值更接近,circos还定义了一系列的灰度。

设置文件

circos的设置文件可以分为多个文件,也可以只写在一个文件里。

一般地,为了人们阅读方便,都会写在多个文件,每个文件描述不同的部分,最后由一个主文件来调用就可以了。

这一节,需要设置三个方面,一,数据源,二如何画染色体,三如何画坐标,所以我们也将它分为三个文件,分别名为,,和。

由来定义数据源,并调用和。

的内容

white=255,255,255

black=0,0,0

blue=0,0,255

<

<>

<>

<>

<>

#specifythekaryotypefilehere

karyotype=

chromosomes_units=1000000

chromosomes_display_default=yes

<>

这里可以注意到它引入其它文件时使用的是<>的方式。

注意,这里include会从circos所在的目录开始寻找,而不是当前目录。

我们可以在circos的安装目录当中找到一个名为etc的目录,可以点击查看其中的,,以及的内容。

在circos当中使用karyotype=xxx语句来定义了karyotype的数据来源。

chromosomes_units=1000000定义了基准单位。

可以试着把这个值扩大10倍。

接下来我们看。

在文件中,定义了如何显示染色体组型。

default=

break=5u

#positionconfiguration

radius=

thickness=100p

fill=yes

fill_color=black

stroke_thickness=2

stroke_color=black

#labelconfiguration

show_label=yes

label_font=bold

label_radius=dims(ideogram,radius)+

label_with_tag=yes

label_size=36

label_parallel=no

#bandconfiguration

show_bands=yes

fill_bands=yes

band_stroke_thickness=2

band_stroke_color=white

band_transparency=0

在当中定义了如何来绘制刻度。

show_ticks=yes

show_tick_labels=yes

skip_first_label=no

skip_last_label=no

radius=dims(ideogram,radius_outer)

tick_separation=3p

label_separation=1p

multiplier=1e-6

color=black

thickness=4p

size=20p

spacing=1u

show_label=no

thickness=2p

color=dgrey

spacing=5u

show_label=no

thickness=3p

color=vdgrey

spacing=10u

show_label=yes

label_size=20p

label_offset=10p

format=%d

grid=yes

grid_color=dgrey

grid_thickness=1p

grid_start=

grid_end=

好了,有了这些文件,我们就可以让程序跑起来了。

/path/to/circos/bin/circos-conf./

第一个问题,如何显示部分染色体,如何显示染色体的一部分,如何截段显示染色体,如何按自定义的顺序来显示

显示部分染色体

前面我讲过,在染色体组型文件中需要写入染色体的正确大小,而不是自己想画的那一部分。

而设置画哪些染色体,画染色体的哪部分,都应该在设置文件中来阐明。

在文件中有一句chromosomes_display_default=yes,它的意思就是显示所有的染色体。

如果只需要显示部分染色体,我们先注释掉这一行,而后使用

chromosomes=hs1;hs2;hs3这样的语句来指定需要显示的染色体。

hs1,hs2,sh3都是染色体组型文件当中的id。

原语句

chromosomes_display_default=yes

替换成

chromosomes_display_default=no

chromosomes=hs1;hs2;hs3

使用chromosomes=hs1;hs2;hs3这样的语句来指定需要显示的染色体

如果只想去掉其中的一两条染色体,上面的写法又太麻烦了。

circos提供了”-”运算符。

原语句

chromosomes_display_default=yes

替换成

chromosomes=-hs1;-hs2;-hs3

chromosomes_display_default=yes

这样的就是不显示hs1,hs2,hs3。

不显示hs1,hs2,hs3

显示染色体的一部分

一条染色体,只想显示它的一小截,需要使用chromosomes=…;ID:

START-END;…这样的定义。

比如只希望显示hs1的0~100Mb,hs2的50~150Mb,h3的50~100Mb应该是

原语句

chromosomes_display_default=yes

替换成

chromosomes=hs1:

0-100;hs2:

50-150;hs3:

50-100;hs4;hs5;hs6;hs7;hs8

显示hs1的0~100Mb,hs2的50~150Mb,h3的50~100Mb

奇怪的是这里的起止数字并没有单位,难道是默认的以Mb为单位吗并不是这样的。

因为我们在文件中定义有chromosomes_units=1000000,它才会以Mb为单位显示。

在circos的绘图单位中,有一个u单位,这个u就是指的chromosomes_units了。

如果你将chromosomes_units设置成10M,那么上面的语句就需要改成hs1:

0-10…这样子。

嗯,有没有象前面一样的”-”运算符呢有的。

原语句

chromosomes_display_default=yes

替换成

chromosomes=hs1;hs2;hs3;hs4;hs5;hs6;hs7;hs8

chromosomes_breaks=-hs1:

100-200;-hs2:

0-50;-hs2:

150-);-hs3:

0-50

chromosomes_breaks=-hs1:

100-200;-hs2:

0-50;-hs2:

150-);-hs3:

0-50

其中”)”表示染色体的末端。

段点显示不明显啊。

这需要我们来定义一个段点显示的方式。

在文件中加入下面的语句

axis_break=yes

axis_break_style=1

axis_break_at_edge=yes

 

stroke_color=black

fill_color=blue

thickness=

stroke_thickness=2

就可以定义出蓝色的轴线了。

其中,axis_break_style后面设置的数值就是自己定义的当中的数值。

定义一个段点显示的方式

我们也可以结合着”chromosomes”和”chromosomes_breaks”来显示,这样可以更方便的控制复杂的段点。

比如

chromosomes=hs1:

0-100;hs2:

0-100;hs3:

0-100;hs4:

0-100;hs5;hs6;hs7;hs8

chromosomes_breaks=-hs1:

25-75;-hs2:

25-75;-hs3:

25-75;-hs4:

25-75;-hs5:

75-);-hs6:

75-);-hs7:

75-);-hs8:

75-)

控制复杂的段点

自定义顺序显示

自定义顺序使用chromosomes_order来定义。

假设我们设置chromosomes=hs1;hs2;hs3;hs4;hs5;hs6;hs7;hs8。

我们使用

chromosomes_order=hs2,hs3,hs1,hs5,hs4,hs8,hs7,hs6

可以得到2,3,1,5,4,8,7,6的顺序。

得到2,3,1,5,4,8,7,6的顺序

有的人可能觉着这种方法太麻烦了,如果我们希望hs4显示在hs5之后,这种相对顺序的设置可以使用

chromosomes_order=hs5,hs4

hs4显示在hs5之后

但是我们发现,这显示出来的顺序是12365478,也就是说,5后面的6先被拿出来,将4放入,4的位置空了,于是把6放到4的位置上去了。

如果我们需要的是12354678这样子的顺序,也就是说只是换一下4和5的顺序的话,就需要把3也设置进来。

思考的方式是先将4空出来,把5放在4的位置,然后把4放进5的位置,可以使用

chromosomes_order=hs3,hs5,hs4

顺序是12365478

如果我们想将某个,或者某几个染色体放在最前面或者最后面,可以使用^或者$定位符。

比如

chromosomes_order=^,hs5

就是让hs5显示在第一位。

chromosomes_order=hs5,$

就是让hs5显示在最后一位。

使用$定位符

如果我们想将hs3和hs2间隔一位显示,可以使用chromosomes_order=hs3,-,hs2。

但是这样显示的结果是45312678。

排序过程是把hs3做为锚定点,先将它后面的两位空出来,然后将hs2和它前面的一位放入,再把空出来的两个位置补满。

如果想分组显示,可以使用chromosomes_order=hs3,hs2,|,hs8,hs1这样的行式。

但是我个人认为这些排序方式作用并不是很大,因为它的排序过程并不是那么直观,反而不是直接依次写入来得直接。

第二个问题,如何设置间隔

设置间隔

我们前面已经了解到了一些,在文件中就是用于设置间隔的,也了解到什么是u单位。

在circos中,除了u单位,还有一个r单位。

r是relative的首字母,它是指相对于全图的大小。

比如本文中使用的deault=就是使用的r单位。

我们可以将u视作绝对单位,把r视作相对单位。

10u单位

单位

如何设置某两个之间的间隔与其它的不同呢我们可以使用标签来定义。

比如

default=

#default=10u

spacing=

spacing=15u

就会让hs1和hs2之间变得很小,而hs3两端固定为15u。

让hs1和hs2之间变得很小,而hs3两端固定为15u

第三个问题,如何修改染色体名字和显示位置

染色体的名称及名称位置

染色体的名称,实际上是由染色体组型文件设定的。

在设置文件中,我们可以更改的是它的后缀,并不能修改名称本身。

如果需要变换名称本身,需要直接修改染色体组型文件的ID值。

在前面的例子中,有分段显示染色体的,如果染色体有多段的话,它们的标签都是一样的,这样并不容易识别,如果顺序再打乱的话,就更加能以分别。

我们可以使用更改后缀的方式来让显示的区分变得明显。

比如

chromosomes=hs1[a]:

0-50;hs1[b]:

150-);hs2[c]:

0-50;hs2[d]:

150-);hs3[e]

chromosomes_order=^,a,c,e,|,b,$

更改后缀的方式来让显示的区分变得明显

我们可以使用

label_with_tag=no

来关闭染色体名称的显示。

如果我们希望变换名称显示的位置,可以通过label_radius,label_center以及label_parallel等参数来设置。

其中label_radius使用到了一个函数dims(),它的意思就是尺度(Dimension),它有两个参数,一个是计算谁的尺寸,一个是计算哪一部分的尺寸。

比如dims(ideogram,radius_inner),就是指ideogram设置当中radius_inner的值。

而dims(ideogram,radius_outer)就是指ideogram设置当中radius_outer的值。

通常的label_center都是no,也就是外对齐的,如果设置它为yes,就是居中对齐了。

假设我们将当中的

label_radius=dims(ideogram,radius)+

改变为

label_radius=dims(ideogram,radius_inner)-

变换名称显示的位置

如果我们设置

label_parallel=yes

label_parallel=yes

我们打开etc/会发现它链接了etc/设置文件,在后者当中,它设置了angle_offset=-90。

这就是为什么排在第一位的染色体总是从图像的最上方开始显示。

circos对角度的解释是这样的:

-90

|

180--+--0

|

90

该文件还可能设置有angle_orientation=counterclockwise,它的意思是反时针方向排布。

默认值为”clockwise”。

染色体的位置

我们可能会觉得,染色体画得是不是太靠边了,有没有办法让它往中间靠靠呢只需要修改中的radius参数就可以了。

试着将

radius=

修改为

radius=

染色体的位置

如果希望画逐一设置染色体的所画的半径呢?

修改

chromosomes_display_default=yes

chromosomes=hs1;hs2;hs3;hs4;hs5;hs6;hs7;hs8;hs9;hs10

chromosomes_radius=hs1:

;hs2:

;hs3:

;hs4:

;hs5:

;hs6:

;hs7:

;hs8:

;hs9:

;hs10:

逐一设置染色体的所画的半径

如果觉着它画得太粗了,换细一点呢修改

thickness=100p

thickness=50p

换细一点

第四个问题,如何只画染色体,不填充条纹呢

只需要设置当中show_bands=no就可以了。

如果想显示条纹,但不填充,设置show_bands=yes,fill_bands=no就可以了。

但实用性不大。

如果想设置填充条纹的不透明度呢设置band_transparency为大于0的整数即可。

比如设置为2。

于是我们得到七彩的染色体图谱。

设置填充条纹的不透明度

第五个问题,如何设置坐标刻度

这是一个比较复杂的问题。

以后会专门介绍。

这里就只解释一下结构。

show_ticks是否显示刻度

show_tick_labels是否显示刻度字符

然后使用来定义每一种刻度。

数据结构

IDSTARTEND

这里的ID对应的是karyotypes数据文件当中的ID,start和end分别定义起始和终止的位置。

下面就是具体的例子:

hs10259871

hs16694582686613

hs127279053991852

hs156454566816208

hs17553915

hs1

hs1

hs1

hs1

hs1

数据保存在文本文件当中就可以了,之后由conf文件调用。

当然这一数据文件可以更复杂,用于定义每个highlight的位置,色彩,以及宽度等等。

比如

hs112989721300443fill_color=blue

hs113117381324571fill_color=red,r0=,r1=+50p

hs113970261421444fill_color=green,r0=,r1=

hs114374171459927fill_color=green,r0=,r1=

hs115407461555847fill_color=yellow

hs115609621645635fill_color=purple

hs116241791645623fill_color=grey

设置文件

与之前一致的,我们需要设置好circos的设置文件,它需要包括前一节介绍的全部:

,和来定义一,数据源,二如何画染色体,三如何画坐标。

而highlight的部分,直接定在文件当中也好,或者写在当中,由来调用也是一样的。

我们来看具体的示例:

<>

<>

 

<>

 

<>

<>

 

<>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1