BioPerl使用手册.docx_第1页
BioPerl使用手册.docx_第2页
BioPerl使用手册.docx_第3页
BioPerl使用手册.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BioPerl使用手册 第一弹Bio:SeqIO篇注:本手册假设你已经拥有了一定的Perl编程经验,对个中术语(terms)不再进行赘述。1. 让我们开始吧为了让第一次使用本手册的同志们在刚开始就有成功的喜悦,这里给出一个例子,大家准备好自己手中的fasta文件吧!请在文本编辑器中写入如下程序,并在终端运行:#! /usr/bin/perl wuse strict;use Bio:SeqIO;my $file = “*”; # Please use your path to replace the startsmy $seqio_object = Bio:SeqIO - new(-file = $file);my $seq_obj = $seqio_object - next_seq;printf “$seq_objn”;如果你成功键入了以上程序并且没有报错发生,那么屏幕上面就会正常显示出你的fasta序列。那么恭喜你,你已经成功调用了BioPerl的模块,并且完成了一个面对对象的程序。下面我们就来看一下我们第一个认识的BioPrel的模块Bio:SeqIO。2. 关于Bio:SeqIO的那些事儿在介绍Bio:SeqIO之前,先来说一下为什么会产生BioPerl这个东西。在生物信息学起步之初Prel语言强悍的字符串处理能力以及执行效率,毫无疑问的被各位从计算机和数学行业转行过来的“生物学家”选为工具语言(在生物信息数据处理方面放眼望去毫无疑问是Perl语言的天下,近来对大规模数据的处理方面R语言亦有崛起之势)。但是,对于这海量的数据,同样丰富多彩的数据格式以及花样繁多的数据分析;每次处理数据都要重新自己编写正则表达式未免效率过于低下。于是,在Perl一次重大的更新之后(引入面对对象编程,后面都将使用OOP代替面对对象编程),几个不太勤快的学生物的程序员看到了通用编程的可能,于是就有了我们现在广泛应用的BioPerl。那我们就来说说这个Bio:SeqIO以及它的姊妹模块Bio:Seq。我们为什么要使用Bio:SeqIO和Bio:Seq模块呢?其原因非常简单,就是因为这两个模块其实就是一个非常非常智能的文件句柄。Bio:SeqIO可以根据你的输入文件类型抽取出所需要的信息,而Bio:Seq则可以按照格式要求储存数据信息。就拿GenBank的flat file文件来讲,其中的feature等信息都是分门别类的进行储存。在这里说也不容易理解,下面我们直接上程序来说明。3. Bio:SeqIO支持的文件格式Bio:SeqIO几乎涵盖所有常见的生物学数据库的通用文档格式,并且可以很好的对格式进行转换,有如此方便的功能,全仰仗于Perl语言本身所具有的强悍的字符串处理能力。下表所展示的就是截止于1.6版本Bio:SeqIO所支持的格式:NameDescriptionFile extensionModuleabiABI tracefileabi1Bio:SeqIO:abiaceAce databaseaceBio:SeqIO:aceagaveAGAVE XMLBio:SeqIO:agavealfALF tracefilealfBio:SeqIO:alfasciitreewrite-only, to visualize featuresBio:SeqIO:asciitreebsmlBSML, using XML:DOMbsmlBio:SeqIO:bsmlbsml_saxBSML, using XML:SAXBio:SeqIO:bsml_saxchadoxmlCHADO sequence formatBio:SeqIO:chadoxmlchaosCHAOS sequence formatBio:SeqIO:chaoschaosxmlChaos XMLBio:SeqIO:chaosxmlctfCTF tracefilectfBio:SeqIO:ctfemblEMBL databaseebl|emb|datBio:SeqIO:emblentrezgeneEntrez Gene ASN1Bio:SeqIO:entrezgeneexcelExcelBio:SeqIO:excelexpStaden EXP formatexpBio:SeqIO:expfastaFASTAfast|seq|fa|fsa|nt|aaBio:SeqIO:fastafastqquality score data in FASTA-like formatfastqBio:SeqIO:fastqflybase_chadoxmlvariant of Chado XMLBio:SeqIO:flybase_chadoxmlgameGAME XMLBio:SeqIO:gamegcgGCGgcgBio:SeqIO:gcggenbankGenBankgbank|genbankBio:SeqIO:genbankinterproInterProScan XMLBio:SeqIO:interprokeggKEGGBio:SeqIO:kegglargefastaLarge files, fasta formatBio:SeqIO:largefastalasergeneLasergene formatBio:SeqIO:lasergenelocuslinkLocusLink LL_tmplBio:SeqIO:locuslinkmetafastaBio:SeqIO:metafastaphdPhredphredBio:SeqIO:phdpirPIR databasepirBio:SeqIO:pirplnPLN tracefileplnBio:SeqIO:plnqualPhredBio:SeqIO:qualrawplain texttxtBio:SeqIO:rawscfStandard Chromatogram FormatscfBio:SeqIO:scfseqxmlSeqXML sequence format using XML:LibXML and XML:WriterxmlBio:SeqIO:seqxmlstriderDNA Strider formatBio:SeqIO:striderswissSwissProtspBio:SeqIO:swisstabtab-delimitedBio:SeqIO:tabtableTableBio:SeqIO:tabletigrTIGR XMLBio:SeqIO:tigrtigrxmlTIGR Coordset XMLBio:SeqIO:tigrxmltinyseqNCBI TinySeq XMLBio:SeqIO:tinyseqztrZTR tracefileztrBio:SeqIO:ztr注意:bioperl-ext以及io_lib库文件对于支持scf, abi, alf, pln, exp, ctf, ztr格式是不可或缺的。下面我们就用例子来说话,来看一下Bio:SeqIO是如何将一个复杂的文件储存在对象(OOP的概念)中方便处理的。4. 方法大全4.1. next_seq首先来看代码如下所示:# print out accession numbers of all entries in a GenBank flat file.# first, bring in the SeqIO module use Bio:SeqIO; # Notice that you do not have to use any Bio:SeqI# objects, because SeqIO does this for you. In fact, it# even knows which SeqI object to use for the provided# format. # Bring in the file and format, or die with a nice# usage statement if one or both arguments are missing.my $usage = getaccs.pl file formatn;my $file = shift or die $usage;my $format = shift or die $usage; # Now create a new SeqIO object to bring in the input# file. The new method takes arguments in the format# key = value, key = value. The basic keys that it# can accept values for are -file which expects some# information on how to access your data, and -format# which expects one of the Bioperl-format-labels mentioned# above. Although it is optional, it is good# programming practice to provide and in front of any# filenames provided in the -file parameter. This makes the# resulting filehandle created by SeqIO explicitly read (). It will definitely help others reading your# code understand the function of the SeqIO object. my $inseq = Bio:SeqIO-new( -file = $format, );# Now that we have a seq stream,# we need to tell it to give us a $seq.# We do this using the next_seq method of SeqIO. while (my $seq = $inseq-next_seq) print $seq-accession_number,n;不知各位是否看出来以上代码的功能了吗?没错,其功能就是读取一个输入的一定格式文件的Accession Number。没有自己设计的正则表达式,不需要自行找出文件的规律,更不用每次都重新写一个处理文本的程序。需要做的就是关注你所需要的重点信息,SeqIO模块的next_seq方法来搞定其他的东西。至于程序中各变量的含义,待我细细分解,就是一些OOP的概念,多加揣摩就能看懂以后的关于OOP的程序啦。首先来看$inseq,这个变量就可以理解为一个object/instance,new方法或函数建立的一个模块SeqIO的对象,模块中的方法都可以用于对这个对象进行处理。而next_seq就这之中的诸多方法之一。基本的语法结构就是“对象 方法(instance method)”的形式。next_seq完成的动作就是取出文件中的一个entry的全部内容,然后根据需求找出你想要的数据就行了,比如Accession Number。4.2. write_seq看下面一个将一个格式的文件转为另外一个格式的程序:use Bio:SeqIO;# get command-line arguments, or die with a usage statementmy $usage = x2y.pl infile infileformat outfile outfileformatn;my $infile = shift or die $usage;my $infileformat = shift or die $usage;my $outfile = shift or die $usage;my $outfileformat = shift or die $usage; # create one SeqIO object to read in,and another to write outmy $seq_in = Bio:SeqIO-new( -file = $infileformat, );my $seq_out = Bio:SeqIO-new( -file = $outfile, -format = $outfileformat, ); # write each entry in the input file to the output filewhile (my $inseq = $seq_in-next_seq) $se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论