这是不是perl语言的快速入门通道呢?

Posted 生信人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是不是perl语言的快速入门通道呢?相关的知识,希望对你有一定的参考价值。

于从事生物信息行业的人来说,学习一门语言是至关重要的。对于海量数据的处理,常规的人工统计分析费时费力,因而利用程序自动化实现是快速而准确的方式。perl语言对于老司机来说基本都熟悉,是最早应用于生物信息学数据处理的常用语言之一。如果您的周围有perl大神,不妨还是学习一下。如果您急切的想速成,bioperl小编还是极力推荐的。


那么什么是bioperl呢?Bioperl是一个令人瞩目的国际性的自由软件开发计划,上面存储了众多的生物信息学领域常用的数据处理模块,对于加速了生物信息学、基因组学以及其他生命科学研究的发展具有重要的意义。直白说,bioperl就是一个模块数据库,我们可以下载安装后直接调用。

那么什么是模块呢?

那首先得讲Perl 的子程序。子程序是用户定义的函数。Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读,仅适用于本程序。 语法格式如下:

    sub subroutine{

           statements;

}

写子程序的目的就是为了程序中可以方便的重复调用,当然从某种意义来说,子程序可以很方便的移植给别人使用。别人假设想要实现此功能(如下面的取反向互补序列例子),可以直接拷贝此程序的代码,加到自己书写的程序里即可,避免再次书写(或者说我不会写此段代码,但我知道有这段子程序代码,可以方便的直接拿来用)。

下面列举了一个求反向互补序列的子程序:

sub reverse_complementary{

        my ($inputseq)=@_;

        my $sequence = reverse($inputseq);

        $sequence =~tr/ACGTUNacgtun/TGCAANtgcaan/d;

        ####/d:表示把匹配上的字符全部替换;

        return $sequence;

}

主程序:

$seq="TCGATGTCGATCNNNNatcgtagctagcddnn";

$reverse_seq=&reverse_complementary($seq);##调用

print “$reverse_seq\n”;

输出结果:

nnhhgctagctacgatNNNNGATCGACATCGA

说完子程序,是不是感觉很神奇,宝宝以后取反向互补序列就不用愁了,我只要知道有这个子程序就可,而不需要再深入了解perl的语法,规则,去重新搞这件事情,是不是加速入门了呢?

其实此处是以子程序为例来引入模块的,因为bioperl上存在了众多好用的模块。模块其实与子程序没有太大的区别,只是模块单独位于一个以.pm结尾的文件中,我们需要安装,才能调用模块中相应的子程序。调用的方法采用use XXX; 其中XXX为模块名字,检测是否安装此模块,可以采用:perldoc 模块名字。

bioperl网址是:http://bioperl.org/,绿色的洁面还是很符合生物的属性的。


其上面的模块主要分类如下:

•Features and Annotations - Reading and writing detailed data associated with sequences.

•BlastPlus - Create, manage, and query BLAST databases with NCBI blast+.

•EUtilities Cookbook  - Simple script examples using Bio::DB::EUtilities. •SearchIO  - Parsing reports from sequence comparison programs like BLAST.

SeqIO  - Sequence file input and output, with script examples.

•Getting Genomic Sequences  - Some examples of how to retrieve genomic sequences.

•AlignIOand SimpleAlign  - Create and analyze alignments using BioPerl.

•Writing BioPerl Tests  - A general guide on how to write BioPerl tests using Test::More.

•OBDA Flat Databases  - Indexing local sequence files for fast retrieval using OBDA. •Tiling  - Use SearchIO to create robust alignments.

•Local Databases - Indexing local sequence files for fast retrieval.

•OBDA  - Using OBDA, a universal and customizable sequence retrieval system.

•Restriction Enzyme Analysis  - in silico restriction enzyme analysis.

•Short-read assemblies with BWA  - Using the bwa assembler in BioPerl.

•Short-read assemblies with maq  - Using the maq assembler in BioPerl.

•Trees  - Using BioPerl to analyze phylogenetic trees. •EUtilities Web Service - Query NCBI Entrez via the EUtilities.

•PAML  - Using the PAML package using BioPerl.

•PhyloXML  - Read and write phyloXML documents using BioPerl.

•Bioperl Objects  - The common and uncommon objects that represent sequence.

•Simple Web Analysis  - Submitting sequence data to Web forms and retrieving results.

•Best Practices  - The conventions to use when writing BioPerl code.

•Advanced BioPerl  - Notes on developing BioPerl code.

•PopGen  - Population genetics, molecular evolution, and BioPerl.

•SubmitPatch  - The steps needed to get your modification to BioPerl into the code base.

•Nexml  - A guide on how to read and write Nexml documents using BioPerl.

•Glyphs  - Extend Bio::Graphics using custom glyphs. •BioGraphics  - Creating beautiful graphics for sequence display and annotation.

•Using Git  - Using Git with BioPerl.

•Submitting Issues  - How we suggest submission of bugs and feature requests..

可以看,上面能处理的内容涵盖了生物信息学的方方面面。

下面小编举两个例子,调用bioperl的Bio::SeqIO模块

A. FASTQ转FASTA程序,。红色部分都是固定写法。

use Bio::SeqIO;

my$in=Bio::SeqIO->new(-file=>"test.fastq",-format=>‘fastq');

my$out=Bio::SeqIO->new(-file=>“>output.fasta",-format=>'fasta');

while(my$seq=$in->next_seq()){

         $out->write_seq($seq);

}

B. 求FASTA的序列长度

use Bio::SeqIO;

open (OUT, ">test.len")|| die;"cannot open test.len:$!";

my $ina = Bio::SeqIO->new(-file => "test.fa",-format => 'fasta');

while(my $obj = $ina->next_seq()){

        my $id = $obj->id;

        my $seq = $obj->seq;

        my $seq_len=$obj->length;

       print OUT “$id\t$seq_len\n”;

}

close OUT;

各位看官们是不是感觉bioperl很好用呢?

欢迎关注生信人

点击以下「关键词」,查看往期内容:

 |  |  ||  |     |  value

  | |  |   |  |

  |  |  |   |

 | |  | |  |   | 


以上是关于这是不是perl语言的快速入门通道呢?的主要内容,如果未能解决你的问题,请参考以下文章

PERL语言快速入门通道

晴朗课堂:Perl语言入门到精通视频课

Python学习总结—— Python 快速入门

如何快速入门Python学习呢?

php快速入门

Python学习总结—— Python 快速入门