这是不是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语言的快速入门通道呢?的主要内容,如果未能解决你的问题,请参考以下文章