1、关于 怎样安 装必须 的注册配 置文件 和获取 序列数 据已 在 doc/howto 中 的BIODATABASE_ACCESS 中叙述,这里不再重复。III.1.1 获取远程数据(获取远程数据(Bio:DB:GenBank 等)等)Bioperl 可以直接从主要的分子生物学数据库中获取序列数据。数据可以通过序列的获取号或 id 来获得。生物秀-专心做生物KillerDigitally signed by Killer DN:cn=Killer,o,ou,email=K,c=US Date:2011.02.25 17:39:18+0800还可以进行批量获取以方便地获取多重序列。例如,从 gen
2、bank 中获取数据的代码如下:$gb=new Bio:GenBank();#this returns a Seq object:$seq1=$gb-get_Seq_by_id(MUSIGHBA1);$seq2=$gb-get_Seq_by_acc(AF303112);#this returns a SeqIO object:$seqio=$gb-get_Stream_by_id(J00522,AF303112,2981014);更多信息见 III.2.1 关于使用 SeqIO 对象。Bioperl 当前支持从 genbank,genpept,Refseq,swissprot 和 EMBL 数
3、据库中获取序列数据。更多信息见 Bio:GenBank manpage,the Bio:GenPept manpage,the Bio:SwissProt manpage,the Bio:RefSeq manpage 和 the Bio:EMBL manpage。用户可以为一个数据库指定不同的数据库镜像特别相关的是 SwissProt 资源有许多 ExPaSy 镜像。还有一些为那些后台防火墙指定本地的代理服务器的配置项。获取 NCBI RefSeqs 序列可以通过一个叫 Bio:RefSeq 的特定模块来查询 EBI 服务器。使用之前可以参考 Bio:RefSeq manpage,有一些关于获
4、取 RefSeq 的告诫。RefSeq 在 Genbank 中的 id 一般是以NT_,NC_,NG_,NM_,NP_,XM_,XR_,orXP_开头(更多信息见 http:/www.ncbi.nlm.nih.gov/LocusLink/refseq.html)。严格来说 Bio:GenBank 可被用来获取与这些 id 一致的 entries,但是记住它们不是 Genbank entries。关于获取以NT_开头的 entries 的特定细节见 Bio:GenBank manpage,这些是经过特别格式化的CONTIG entries。Bioperl 也支持从一个远程 Ace 数据库中获取序
5、列。这个功能需要另外的 AcePerl 模块。你需要下载并安装aceperl 模块,见 http:/stein.cshl.org/AcePerl/。另一个模块 BioFetch,可用于访问远程数据库,它会查询 EBI 中的 dbfetch 脚本。适用数据库如EMBL,GenBank 或 SWALL,可以通过不同格式如 objects 或 streams(SeqIO objects),或tempfiles来获取entries。详细内容见 Bio:BioFetch manpage。III.1.2 索引和访问本地数据库索引和访问本地数据库(Bio:Index:*,bp_index.pl,bp_fet
6、ch.pl,Bio:*)通过 Bio:Index 或 Bio:Fasta 对象,Bioperl允许索引本地序列文件。下面的序列数据格式支持 Bio:genbank,swissprot,pfam,embl 和 fasta。一旦使用 Bio:Index 索引一组序列,就可用与访问远程数据库相似的句法来获取单条序列。例如,如果想设置一个 fasta 格式的索引平台文件数据库,并获取一个文件,可以这样写代码:#script 1:create the index use Bio:Fasta;#using fasta file format use strict;#some users have repo
7、rted that this is necessary my$Index_File_Name=shift;my$inx=Bio:Fasta-new(生物秀-专心做生物 -filename=$Index_File_Name,-write_flag=1);$inx-make_index(ARGV);#script 2:retrieve some files use Bio:use strict;Fasta-new($Index_File_Name);foreach my$id(ARGV)my$seq=$inx-fetch($id);#Returns Bio:Seq object#do someth
8、ing with the sequence 为了方便创建和使用更复杂或更灵活的索引系统,bioperl 在 scripts/index 文件夹下分配了两个样本脚本,bp_index.PLS 和 bp_fetch.PLS。这些脚本能够被用作模板来发展用户化的本地数据文件索引系统。Bioperl 还提供了 Bio:Fasta 作为索引和查询 Fasta 格式文件的手段。它与 Bio:Fasta 的精髓是一致的但是提供了更多的方法,例如:use Bio:my$db=Bio:Fasta-new($file);#one file or many files my$seqstring=$db-seq($i
9、d);#get a sequence as string my$seqobj=$db-get_Seq_by_id($id);#get a PrimarySeq obj my$desc=$db-header($id);#get the header,or description line 关于这个模块的全部特征的更多信息见 Bio:Fasta manpage。这 两 个 模 块 还 可 以 让 用 户 在 fasta 头 文 件 中 指 明 一 个 特 定 字 符 串 作 为 识 别 id,如 字 符 串gi|4556644|gb|X45555中的 gi number。看下面的 fasta 格式
10、序列,它储存在文件test.fa中:gi|523232|emb|AAC12345|sp|D12567 titin fragment MHRHHRTGYSAAYGPLKJHGYVHFIMCVVVSWWASDVVTYIPLLLNNSSAGWKRWWWIIFGGE GHGHHRTYSALWWPPLKJHGSKHFILCVKVSWLAKKERTYIPKKILLMMGGWWAAWWWI 默认情况下,Bio:Fasta 和 Bio:Fasta 会使用他们在 fasta 头文件中遇到的第一个词作为获取关键词,如本例中的gi|523232|emb|AAC12345|sp|D12567。一个单独的 id 作为一
11、个关键词会更有用。下面的代码将索引test.fa并创建一个索引文件test.fa.idx,其关键词是 Swissprot,或sp标识符。$ENVBIOPERL_INDEX_TYPE=SDBM_File;#look for the index in the current directory$ENVBIOPERL_INDEX=.;my$file_name=test.fa;Fasta-new(-filename =$file_name.idx,生物秀-专心做生物 -write_flag=1);#pass a reference to the critical function to the Bio
12、:Index object$inx-id_parser(&get_id);#make the index$inx-make_index($file_name);#here is where the retrieval key is specified sub get_id my$header=shift;$header=/.*bsp|(A-Zd5b)/;$1;这里是关于怎样获取序列的方法,如用一个 Bio:Seq 对象:my$seq=$inx-fetch(D12567);print$seq-seq;如果你想用一个 Swissprot id 或一个 gi number 获取一条序列,而 fast
13、a 头文件实际上是多个 gi 和 Swissprot串联的头文件,该如何操作?gi|523232|emb|AAC12345|sp|D12567|gi|7744242|sp|V11223 titin fragment 修改那些传递到 id_parser 方法的功能:sub get_id my$header=shift;my(sps)=$header=/.*bsp|(A-Zd5)b/g;my(gis)=$header=/gi|(d+)b/g;return(sps,gis);Bio:Fasta 模块使用相同的原理,但是句法稍微有所不同,例如:Fasta-new(test.fa,-makeid=&ma
14、ke_my_id);my$seqobj=$db-get_Seq_by_id($id);sub make_my_id my$description_line=shift;$description_line=/gi|(d+)|emb|(w+)/;($1,$2);bioperl 的核心安装文件并不支持访问储存在关系数据库中的序列和数据。这种功能由附属的 bioperl-db 文库提供。更多信息见 IV.3 节。III.2 转换数据库或文件记录格式转换数据库或文件记录格式 生物秀-专心做生物III.2.1 转换序列文件转换序列文件(SeqIO)生物信息学的一个普通的任务就是在广泛使用的序列数据格式之间
15、进行转换。Bioperl 的 SeqIO 对象使这件事 变 得 轻 而 易 举。SeqIO能 够 阅 读 大 量 的 序 列 格 式(在 一 个 或 多 个 文 件 中):Fasta,EMBL,GenBank,Swissprot,PIR,GCG,SCF,phd/phred,Ace,fastq,exp,chado,or raw(plain sequence)。SeqIO 也能够分析 alf,ztr,abi,ctf,和 ctr 格式的文件,一旦序列数据被 SeqIO 读取,就变成 bioperl 的 Seq、PrimarySeq 或 RichSeq 对象所能利用的形式,选用这几个对象要看序列的来源
16、。此外,序列对象可以任何支持的数据格式被写入另一个文件(也用 SeqIO),使数据转换简单并可执行,例如:SeqIO;$in =Bio:SeqIO-new(-file=inputfilename,-format=Fasta);$out=Bio:SeqIO-new(-file=outputfilename,-format=EMBL);while(my$seq=$in-next_seq()$out-write_seq($seq);另外,perl 的tied 句柄句法是 SeqIO 可用的,你可以用 standard 和打印操作来读写序列对象,例如:SeqIO-newFh(-file=inputfi
17、lename,-format=fasta);SeqIO-newFh(-format=embl);print$out$_ while;如果不使用-format语句,Bioperl 会依赖于文件后缀来决定格式,这是一个较慢的办法。如果没有后缀可用,SeqIO 会基于实际内容推测序列的格式。这里是当前通用的一组后缀:Format Suffixes Comment fasta fasta|fast|seq|fa|fsa|nt|aa Fasta genbank gb|gbank|genbank|gbs|gbk Genbank scf scf SCF tracefile pir pir PIR embl
18、embl|ebl|emb|dat EMBL raw txt plain gcg gcg GCG ace ace ACeDB bsml bsm|bsml BSML XML game GAME XML swiss swiss|sp SwissProt phd phd|phred Phred fastq fastq Fastq Locuslink LL_tmpl format qual Phred quality file chado Chado XML tinyseq NCBI TinySeq XML exp exp Staden experiment file abi*abi ABI trace
19、file 生物秀-专心做生物 alf*alf ALF tracefile ctf*ctf CTF tracefile ztr*ztr ZTR tracefile pln*pln Staden plain tracefile *这些格式需要 bioperl-ext 包和来自于 Staden 包的 io_lib 文库 更多信息见 Bio:SeqIO manpage 或 SeqIO HOWTO(http:/bioperl.org/HOWTOs/html/SeqIO.html)III.2.2 转换比对文件转换比对文件(AlignIO)数据文件储存的多序列比对也具有不同的格式。AlignIO 是 bio
20、perl 中转换比对文件格式的对象。AlignIO基本用法类似于 SeqIO 对象,它的许多命令的名字与 SeqIO 相同。如在 SeqIO 和 AlignIO 对象中都可以用-file和-format来创建文件:AlignIO;my$io=Bio:AlignIO-new(-file =receptors.aln,-format=clustalw);如果-format语句不起作用,Bioperl 就通过文件后缀来决定格式,下面是目前常用的一组后缀:格式 后缀 内容 bl2seq clustalw aln emboss*water|needle fasta fasta|fast|seq|fa|f
21、sa|nt|aa maf maf mase Seaview mega meg|mega meme meme metafasta msf msf|pileup|gcg GCG nexus nexus|nex pfam pfam|pfm phylip phylip|phlp|phyl|phy|phy|ph interleaved prodom psi psi PSI-BLAST selex selex|slx|selx|slex|sx HMMER stockholm *water,needle,matcher,stretcher,merger,和 supermatcher 见 IV.2.1 的 E
22、MBOSS。与 SeqIO 不同的是,AlignIO 不能创建每种格式的输出文件。AlignIO 当前支持 6 种输出格式:fasta,mase,selex,clustalw,msf/gcg 和 phylip(交叉存取)。AlignIO 与 SeqIO 的另一个重要区别是 AlignIO 一次只能操作一个比对 IO,而 SeqIO.pm可以在单串中操作生物秀-专心做生物多个序列。AlignIO 的句法基本上与 SeqIO 一致:AlignIO-new(-file=inputfilename,-format=fasta);AlignIO-new(-file=outputfilename,-for
23、mat=pfam);while(my$aln=$in-next_aln()$out-write_aln($aln);仅有的区别是返回的对象的条目,$aln,是针对 SimpleAlign 对象而不是 Seq 对象。AlignIO也支持上面描述的SeqIO的tied句柄的句法。更多关于SimpleAlign的信息见Bio:AlignIO manpage,Bio:SimpleAlign manpage 和 III.5。III.3 操作序列操作序列 Bioperl 包括许多序列分析模块。如果在 bioperl 中没有找到你要找的功能,就在 EMBOSS 或 PISE 中找,它们可在 bioperl-
24、run 附加文库中得到(见 IV.2.1)。III.3.1 使用使用 Seq 方法操作序列方法操作序列 现在我们知道了如何获取序列并将它们作为序列对象访问。再来看看怎样使用序列对象去操作我们的序列数据并返回信息。Seq 提供了多种方法来执行许多普通(有时候不普通)的操作序列和返回数据的任务。这里列了一些最有用的:这些方法返回字符串或者被用来设定值:$seqobj-display_id();#the human read-able id of the sequence$seqobj-seq();#string of sequence$seqobj-subseq(5,10);#part of th
25、e sequence as a string$seqobj-accession_number();#when there,the accession number$seqobj-alphabet();#one of dna,rna,protein$seqobj-primary_id();#a unique id for this sequence irregardless#of its display_id or accession number$seqobj-desc();#a description of the sequence 值得一提的是有些值对应于给定格式的特定区域。例如,disp
26、lay_id 方法返回一个 Genbank entry 的 LOCUS 名字,在一个 Fasta 文件中,(S+)跟随,ID 来自于一个 SwissProt 文件,等等。desc()方法将返回一个 Genbank 文件中的 DEFINITION 行,在 Fasta 文件中,这一行跟着 display_id,SwissProt 文件中在 DE 区。下面的方法返回一组 Bio:SeqFeature 对象:$seqobj-get_SeqFeatures;#The top level sequence features$seqobj-get_all_SeqFeatures;#All sequence
27、features,including sub-#seq features 对于一条 comment 注释,你可以使用:生物秀-专心做生物 use Bio:Annotation:Comment;$seq-annotation-add_Annotation(comment,Bio:Comment-new(-text=some description);对于一条 reference 注释,可以使用:Reference;$seq-annotation-add_Annotation(reference,Bio:Reference-new(-authors =author1,author2,-title
28、=title line,-location=location line,-medline =998122);序列特征将在III.7的机器可读序列注释中讨论。对这个对象的总体描述在Bio:SeqFeature:Generic manpage中可以找到,一个相关的高水平的注释描述在 Bio:Collection manpage 中。另外的关于获取序列特征的样本代码可在 gb2features.pl 中找到,它在子文件夹 examples/DB 下。最后,还有关于特征和注释的 HOWTO(http:/bioperl.org/HOWTOs/html/Feature-Annotation.html)和一
29、节在FAQ 中关于特征的介绍(http:/bioperl.org/Core/Latest/faq.html#5)。下面的方法返回新的序列对象,但是并不把起始对象的特征传递到结果特征中:$seqobj-trunc(5,10);#truncation from 5 to 10 as new object$seqobj-revcom;#reverse complements sequence$seqobj-translate;#translation of the sequence 注意到一些方法返回字符串,一些返回队列,一些返回对象。Seq manpage。许多方法自己都带有注释。然而,bioperl 灵活的方法准许有更多的注释。生物信息学中的翻译意味着两种稍有不同的事件:1.从头到尾翻译一段
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2