Bioperl:把Genbank格式的序列转换为基因结构图
下面是一个Bioperl的小程序,可以把Genbank格式的序列转换为png图片-基因结构图,显示序列的长度,CDS区,exon区,STS区等。简单地讲就是把该序列的Genbank格式里的信息用图片表示。 这个程序来源于网络。
下面举个例子,以NM_172587为例。
NM_172587的Genbank格式下面的链接,另存为文件名’NM_172587.gb’:
http://www.liucheng.name/entrez/entrez.php?acc=NM_172587&db=nucleotide&format=gb&start=Submit
下面是Bioperl脚本:
存为文件名:graphics.pl
#!/usr/bin/perl -w use Bio::Graphics; use Bio::SeqIO; use Bio::SeqFeature::Generic; my $file = shift or die "provide a sequence file as the argument"; my $io = Bio::SeqIO->new(-file=>$file) or die "couldn't create Bio::SeqIO"; my $seq = $io->next_seq or die "couldn't find a sequence in the file"; my @features = $seq->all_SeqFeatures; # sort features by their primary tags my %sorted_features; for my $f (@features) { my $tag = $f->primary_tag; push @{$sorted_features{$tag}},$f; } my $panel = Bio::Graphics::Panel->new( -length => $seq->length, -key_style => 'between', -width => 800, -pad_left => 10, -pad_right => 10); $panel->add_track(arrow => Bio::SeqFeature::Generic->new(-start => 1, -end => $seq->length), -bump => 0, -double=>1, -tick => 2); $panel->add_track(generic => Bio::SeqFeature::Generic->new(-start => 1, -end => $seq->length, -bgcolor => 'blue', -label => 1)); # general case my @colors = qw(cyan orange blue purple green chartreuse magenta yellow aqua); my $idx = 0; for my $tag (sort keys %sorted_features) { my $features = $sorted_features{$tag}; $panel->add_track($features, -glyph => 'generic', -bgcolor => $colors[$idx++ % @colors], -fgcolor => 'black', -font2color => 'red', -key => "${tag}s", -bump => +1, -height => 8, -label => 1, -description => 1); } print $panel->png;
用法:
perl graphics.pl NM_172587.gb >1.png
结果就生成了一个名为1.png的图片,如下图
当然了,用这个脚本首先你的电脑已经装好了Bioperl。这个就不多讲了~
有点相关的文章
- 如何确定基因的内含子和外显子序列及基因结构图 (0.340)
- GenBank数据库1982-2008数据统计图 (0.335)
- 快速提取序列的Perl脚本 (0.335)
- Bioperl:对序列数据进行操作 (0.326)
- Bioperl:使用和解析 BLAST (0.326)
- 提供数码相机方面的最新资讯——欢迎订阅 (RANDOM - 0.250)
我用你的方法试了一遍,可是只是生成了一个6.58kB大小的名为1.png的文件,文件打开后没有任何图片,你能不能帮我分析下原因..
谢谢~!
还有这个:
Subroutine new redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 80, line 73.
Subroutine start redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 102, line 73.
Subroutine end redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 128, line 73.
Subroutine length redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 165, line 73.
Subroutine location_type redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 256, line 73.
Subroutine to_FTstring redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 303, line 73.
Subroutine trunc redefined at E:/Program Files/Perl/site/lib/Bio\Location\Simple.pm line 334, line 73.
Subroutine new redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 134, line 89.
Subroutine location_type redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 161, line 89.
Subroutine start redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 223, line 89.
Subroutine end redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 250, line 89.
Subroutine min_start redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 277, line 89.
Subroutine max_start redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 296, line 89.
Subroutine start_pos_type redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 316, line 89.
Subroutine min_end redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 346, line 89.
Subroutine max_end redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 365, line 89.
Subroutine end_pos_type redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 385, line 89.
Subroutine to_FTstring redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 456, line 89.
Subroutine _fuzzypointdecode redefined at E:/Program Files/Perl/site/lib/Bio\Location\Fuzzy.pm line 557, line 89.
没有装好Bioperl吧~
use Bio::Graphics;
use Bio::SeqIO;
use Bio::SeqFeature::Generic;
确定都有了?
perldoc 看看
用这里的方法安装吗?
http://liucheng.name/765/
感觉bioperl没安装好
我也试了几次,没把握能装好~
用perldoc看看
我也遇到这个错误,不知道现在如何解决。
安装bioperl颇为坎坷,能获取数据了,可惜没有biographics模块,图像显示不出来……
安装bioperl的确是难啊。试着多安装几次呗。我有空再装装看。再玩玩。 [ok]
嗯,使用开源的这些免费的资源很多时候是需要付出代价的。
winxp下我已经安装不下10次bioperl……
但biographic还没有什么效果……
试试linux。
你好
我的bioperl一直安装不好,按照bioperlchina网站上面说的那样做的,但是不知道是因为网络的原因还是其他原因,装不好。
我初学perl,很过东西还不清楚,所以能不能麻烦告诉我怎么解决这些问题
我现在使用的平台是Windows和Cygwin
谢谢
你好,请问下你安装的perl是什么版本的啊,好像Bio::Graphics 模块在1.6版本以后就单独列出来了呀,这个怎么安装呢??
听说你的网站PR 不错啊@!
您好,我的问题如1楼,运行程序没问题,但是生成的png里面啥也没有。我用perldoc查看了,所需的模块全有,不知道问题出在哪里?麻烦博主帮忙分析一下。
确定是用上面的例子??
perl graphics.pl NM_172587.gb >1.png
这句只是个例子。要注意路径。~ [衰]
下次请到yunbio.com
是的。
你好!经常看你的博客获益非浅啊!我对perl 略懂,对bioperl就比较白痴了,现在有个问题想请柳大侠帮助:我想画一个转录本的剪接方式的图,就是一个基因如果有三个转录本,我就把三个转录本的剪接方式画在下面,折腾了好久都不行,主要是对程序不太懂,不会改,希望博主不吝赐教,谢谢
正想用这样的基因结构图啊!可我怎么画不出来?这个例子跑出的1.png只有10.7K,打开没图片,啥也没有。
use Bio::Graphics;
use Bio::SeqIO;
use Bio::SeqFeature::Generic;。
这三个模块都装好的。。BioPerl也可以用的。
柳大侠能帮忙找找原因吗?