基因组作图软件GenomeDiagram.docx
- 文档编号:11625034
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:27
- 大小:506KB
基因组作图软件GenomeDiagram.docx
《基因组作图软件GenomeDiagram.docx》由会员分享,可在线阅读,更多相关《基因组作图软件GenomeDiagram.docx(27页珍藏版)》请在冰豆网上搜索。
基因组作图软件GenomeDiagram
第17章Graphics模块中的基因组可视化包—GenomeDiagram
Bio.Graphics 模块基于Python的第三方扩展库 ReportLab ,ReportLab主要生成PDF文件,同时也能生成EPS(EncapsulatedPostscript)文件和SVG文件。
ReportLa可以导出矢量图,如果安装依赖关系(Dependencies),比如 PIL(PythonImagingLibrary),ReportLab也可以导出JPEG,PNG,GIF,BMP和PICT格式的位图(Bitmapimage)。
17.1基因组可视化包—GenomeDiagram
17.1.1GenomeDiagram简介
Bio.Graphics.GenomeDiagram 包被整合到Biopython1.50版之前,就已经是Biopython的独立模块。
GenomeDiagram包首次出现在2006年Pritchard等人在Bioinformatics杂志的一篇文章[:
ref:
`2
//biopython.org/DIST/docs/GenomeDiagram/userguide.pdf 。
正如“GenomeDiagram”名称所指,它主要用于可视化全基因组(特别是原核生物基因组),即可绘制线型图也可绘制环形图,Toth等人在2006年发表的文章[:
ref:
`3
VanderAuwera等人在2009年发表的文章[:
ref:
`4
如果存储基因组信息的是从GenBank文件中下载的 SeqRecord 话,它会包含许多 SeqFeature ,那么用这个模块处理就很简单(详见第 :
ref:
`4
ref:
`5
17.1.2图形,轨迹,特征集和特征
GenomeDiagram使用一组嵌套的对象,图层中沿着水平轴或圆圈的图形对象(diagramobject)表示一个序列(sequence)或序列区域(sequenceregion)。
一个图形可以包含多个轨迹(track),呈现为横向排列或者环形放射图。
这些轨迹的长度通常相等,代表相同的序列区域。
可用一个轨迹表示基因的位置,另一个轨迹表示调节区域,第三个轨迹表示GC含量。
可将最常用轨迹的特征打包为一个特征集(feature-sets)。
CDS的特征可以用一个特征集,而tRNA的特征可以用另外一个特征集。
这不是强制性的要求,你可以在diagram中用同样的特征集。
如果diagram中用不同的特征集,修改一个特征会很容易,比如把所有tRNA的特征都变为红色,你只需选择tRNA的特征就行。
新建图形主要有两种方式。
第一种是自上而下的方法(Top-Down),首先新建diagram对象,然后用diagram的方法来添加track(s),最后用track的方法添加特征。
第二种是自下而上的方法(Bottom-Up),首先单独新建对象,然后再将其进行组合。
17.1.3自上而下的实例
我们用一个从GenBank文件中读取出来的 SeqRecord 来绘制全基因组(详见第 :
ref:
`5
这里用鼠疫杆菌 YersiniapestisbiovarMicrotus 的pPCP1质粒,元数据文件NC_005816.gb在Biopython中GenBank的tests目录下,NC_005816.gb 也可下载
fromreportlab.libimportcolors
fromreportlab.lib.unitsimportcm
fromBio.GraphicsimportGenomeDiagram
fromBioimportSeqIO
record=SeqIO.read("NC_005816.gb","genbank")
这里用自上而下的方法,导入目标序列后,新建一个diagram,然后新建一个track,最后新建一个特征集(featureset):
gd_diagram=GenomeDiagram.Diagram("YersiniapestisbiovarMicrotusplasmidpPCP1")
gd_track_for_features=gd_diagram.new_track(1,name="AnnotatedFeatures")
gd_feature_set=gd_track_for_features.new_set()
接下来的部分最有趣,提取 SeqRecord 中每个基因的 SeqFeature 对象,就会为diagram生成一个相应的特征(feature),将其颜色设置为蓝色,分别用深蓝和浅蓝表示。
forfeatureinrecord.features:
iffeature.type!
="gene":
#Excludethisfeature
continue
iflen(gd_feature_set)%2==0:
color=colors.blue
else:
color=colors.lightblue
gd_feature_set.add_feature(feature,color=color,label=True)
创建导出文件需要两步,首先是 draw 方法,它用ReportLab对象生成全部图形。
然后是 write 方法,将图形存储到格式文件。
注意:
输出文件格式不止一种。
gd_diagram.draw(format="linear",orientation="landscape",pagesize='A4',
fragments=4,start=0,end=len(record))
gd_diagram.write("plasmid_linear.pdf","PDF")
gd_diagram.write("plasmid_linear.eps","EPS")
gd_diagram.write("plasmid_linear.svg","SVG")
如果安装了依赖关系(Dependencies),也可以生成位图(Bitmapimage),代码如下:
gd_diagram.write("plasmid_linear.png","PNG")
注意,我们将代码中的 fragments 变量设置为“4”,基因组就会被分为“4”个片段。
如果想要环形图,可以试试以下的代码:
gd_diagram.draw(format="circular",circular=True,pagesize=(20*cm,20*cm),
start=0,end=len(record),circle_core=0.7)
gd_diagram.write("plasmid_circular.pdf","PDF")
示例图不是非常精彩,但这仅仅是精彩的开始。
17.1.4自下而上的实例
现在,用“自下而上”的方法来创建相同的图形。
首先新建不同的对象(可以是任何顺序),然后将其组合。
fromreportlab.libimportcolors
fromreportlab.lib.unitsimportcm
fromBio.GraphicsimportGenomeDiagram
fromBioimportSeqIO
record=SeqIO.read("NC_005816.gb","genbank")
#Createthefeaturesetanditsfeatureobjects,
gd_feature_set=GenomeDiagram.FeatureSet()
forfeatureinrecord.features:
iffeature.type!
="gene":
#Excludethisfeature
continue
iflen(gd_feature_set)%2==0:
color=colors.blue
else:
color=colors.lightblue
gd_feature_set.add_feature(feature,color=color,label=True)
#(thisforloopisthesameasinthepreviousexample)
#Createatrack,andadiagram
gd_track_for_features=GenomeDiagram.Track(name="AnnotatedFeatures")
gd_diagram=GenomeDiagram.Diagram("YersiniapestisbiovarMicrotusplasmidpPCP1")
#Nowhavetogluethebitstogether...
gd_track_for_features.add_set(gd_feature_set)
gd_diagram.add_track(gd_track_for_features,1)
同样,利用 draw 和 write 方法来创建线形图或者环形图,结果应该完全相同(“draw”和“write”部分的代码见17.1.3)。
17.1.5简单的Feature
以上示例中,创建diagram使用的 SeqRecord 的 SeqFeature 对象(详见 :
ref:
`4.3
如果你不需要SeqFeature 对象,只将目标feature定位在坐标轴,仅需要创建minimal SeqFeature 对象,方法很简单,代码如下:
fromBio.SeqFeatureimportSeqFeature,FeatureLocation
my_seq_feature=SeqFeature(FeatureLocation(50,100),strand=+1)
对于序列来说, +1 代表正向, -1 代表反向, None 代表两者都有,下面举个简单的示例:
fromBio.SeqFeatureimportSeqFeature,FeatureLocation
fromBio.GraphicsimportGenomeDiagram
fromreportlab.lib.unitsimportcm
gdd=GenomeDiagram.Diagram('TestDiagram')
gdt_features=gdd.new_track(1,greytrack=False)
gds_features=gdt_features.new_set()
#Addthreefeaturestoshowthestrandoptions,
feature=SeqFeature(FeatureLocation(25,125),strand=+1)
gds_features.add_feature(feature,name="Forward",label=True)
feature=SeqFeature(FeatureLocation(150,250),strand=None)
gds_features.add_feature(feature,name="Strandless",label=True)
feature=SeqFeature(FeatureLocation(275,375),strand=-1)
gds_features.add_feature(feature,name="Reverse",label=True)
gdd.draw(format='linear',pagesize=(15*cm,4*cm),fragments=1,
start=0,end=400)
gdd.write("GD_labels_default.pdf","pdf")
图形示例结果请见下一节图中的第一个图,缺省的feature为浅绿色。
注意,这里用 name 参数作为feature的“说明文本”(captiontext)。
下文将会讲述更多细节。
17.1.6Feature说明
下面代码中, feature 作为 SeqFeature 的对象添加到diagram。
gd_feature_set.add_feature(feature,color=color,label=True)
前面的示例用 SeqFeature 的注释为feature做了恰当的文字说明。
SeqFeature 对象的限定符(qualifiersdictionary)缺省值是:
gene, label, name, locus_tag,和 product 。
简单地说,你可以定义一个名称:
gd_feature_set.add_feature(feature,color=color,label=True,name="MyGene")
每个feature标签的说明文本可以设置字体、位置和方向。
说明文本默认的位置在图形符号(sigil)的左边,可选择在中间或者右边,线形图中文本的默认方向是45°旋转。
#Largefont,parallelwiththetrack
gd_feature_set.add_feature(feature,label=True,color="green",
label_size=25,label_angle=0)
#Verysmallfont,perpendiculartothetrack(towardsit)
gd_feature_set.add_feature(feature,label=True,color="purple",
label_position="end",
label_size=4,label_angle=90)
#Smallfont,perpendiculartothetrack(awayfromit)
gd_feature_set.add_feature(feature,label=True,color="blue",
label_position="middle",
label_size=6,label_angle=-90)
用前面示例的代码将这三个片段组合之后应该可以得到如下的结果:
除此之外,还可以设置“label_color”来调节标签的颜色(第 :
ref:
`17.1.9
示例中默认的字体很小,这是比较明智的,因为通常我们会把许多Feature同时展示,而不像这里只展示了几个比较大的feature。
17.1.7表示Feature的图形符号
以上示例中Feature的图形符号(sigil)默认是一个方框(plainbox),GenomeDiagram第一版中只有这一选项,后来GenomeDiagram被整合到Biopython1.50时,新增了箭头状的图形符号(sigil)。
#DefaultusesaBOXsigil
gd_feature_set.add_feature(feature)
#Youcanmakethisexplicit:
gd_feature_set.add_feature(feature,sigil="BOX")
#Oroptforanarrow:
gd_feature_set.add_feature(feature,sigil="ARROW")
Biopython1.61又新增3个图形形状(sigil)。
#Boxwithcornerscutoff(makingitanoctagon)
gd_feature_set.add_feature(feature,sigil="OCTO")
#Boxwithjaggededges(usefulforshowingbreaksincontains)
gd_feature_set.add_feature(feature,sigil="JAGGY")
#Arrowwhichspanstheaxiswithstrandusedonlyfordirection
gd_feature_set.add_feature(feature,sigil="BIGARROW")
下面就是这些新增的图形形状(sigil),多数的图形形状都在边界框(boundingbox)内部,在坐标轴的上/下位置代表序列(Strand)方向的正/反向,或者上下跨越坐标轴,高度是其他图形形状的两倍。
“BIGARROW”有所不同,它总是跨越坐标轴,方向由feature的序列决定。
17.1.8箭头形状
上一部分我们简单引出了箭头形状。
还有两个选项可以对箭头形状进行设置:
首先根据边界框的高度比例来设置箭杆宽度。
#Fullheightshafts,givingpointedboxes:
gd_feature_set.add_feature(feature,sigil="ARROW",color="brown",
arrowshaft_height=1.0)
#Or,thinshafts:
gd_feature_set.add_feature(feature,sigil="ARROW",color="teal",
arrowshaft_height=0.2)
#Or,verythinshafts:
gd_feature_set.add_feature(feature,sigil="ARROW",color="darkgreen",
arrowshaft_height=0.1)
结果见下图:
其次,根据边界框的高度比例设置箭头长度(默认为0.5或50%):
#Shortarrowheads:
gd_feature_set.add_feature(feature,sigil="ARROW",color="blue",
arrowhead_length=0.25)
#Or,longerarrowheads:
gd_feature_set.add_feature(feature,sigil="ARROW",color="orange",
arrowhead_length=1)
#Or,veryverylongarrowheads(i.e.allhead,noshaft,sotriangles):
gd_feature_set.add_feature(feature,sigil="ARROW",color="red",
arrowhead_length=10000)
结果见下图:
Biopython1.61新增 BIGARROW 箭头形状,它经常跨越坐标轴,箭头指向”左边“代表”反向“,指向”右边“代表”正向“。
#Alargearrowstraddlingtheaxis:
gd_feature_set.add_feature(feature,sigil="BIGARROW")
上述 ARROW 形状中的箭杆和箭头设置选项都适用于 BIGARROW 。
17.1.9完美示例
回到”自上而下的示例Section :
ref:
`17.1.3
箭头表示基因,窄框穿越箭头表示限制性内切酶的切割位点。
fromreportlab.libimportcolors
fromreportlab.lib.unitsimportcm
fromBio.GraphicsimportGenomeDiagram
fromBioimportSeqIO
fromBio.SeqFeatureimportSeqFeature,FeatureLocation
record=SeqIO.read("NC_005816.gb","genbank")
gd_diagram=GenomeDiagram.Diagram(record.id)
gd_track_for_features=gd_diagram.new_track(1,name="AnnotatedFeatures")
gd_feature_set=gd_track_for_features.new_set()
forfeatureinrecord.features:
iffeature.type!
="gene":
#Excludethisfeature
continue
iflen(gd_feature_set)%2==0:
color=colors.blue
else:
color=colors.lightblue
gd_feature_set.add_feature(feature,sigil="ARROW",
color=color,label=True,
label_size=14,label_angle=0)
#Iwanttoincludesomestrandlessfeatures,soforanexample
#willuseEcoRIrecognitionsitesetc.
forsite,name,colorin[("GAATTC","EcoRI",colors.green),
("CCCGGG","SmaI",colors.orange),
("AAGCTT","HindIII",colors.red),
("GGATCC","BamHI",colors.purple)]:
index=0
whileTrue:
index=record.seq.find(site,start=index)
ifindex==-1:
break
feature=SeqFeature(FeatureLocation(index,index+len(site)))
gd_feature_set.add_feature(feature,color=color,name=name,
label=True,label_size=10,
label_color=color)
index+=len(sit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基因组 作图 软件 GenomeDiagram