第七章Bioperl模块唐玉荣tangyurong@主要内容7.1 Bioperl模块简介7.2 Bioperl功能与用法1.Sequences类2.Alignments类3.Analysis类4.Databases类7.3 实例7.1 Bioperl模块简介1.什么是Bioperl–Bioperl是一组Perl模块,它的主要目的在于利用Perl解决生物学研究中的一些问题,主要是生物信息学中的各种实际问题,如获取分子数据,分析序列文件,序列比对,大批量BLAST等。
–Bioperl开发项目正式开始于1995年。
它是一个开放源代码项目,使用Perl语言开发,由OBF(Open BioinformaticsFoundation) 所支持。
Bioperl的官方主页是:2.Bioperl相关文档–Bioperl tutorial/Core/Latest/bptutorial.html –Mastering Perl for Bioinformatics: Introduction to bioperl /catalog/mperlbio/chapter/ch09.pdf –Bioperl documentation/Core/Latest/modules.html –Modules listing/bioperl-live/–Jason Stajich的Bioperl教程/Bioperl_Tutorials/–Beginner’s HOWTO by Brian Osborne & James Thompson /HOWTOs/Beginners/index.html–法国Pasteur Institute的Bioperl课程http://www.pasteur.fr/recherche/unites/sis/formation/bioperl/–WIBR Bioinformatics and Research Computing /bio/education/bioinfo-mini/unix-perl/ /~lehvasla/bioperl/7.2 Bioperl功能与用法1.Sequences类2.Alignments类3.Analysis类4.Databases类1.Sequences类–The Bio::SeqIO class–Sequence classes–Features and Location classes –Sequence analysis tools•The Bio::SeqIO class文档:/releases/bioperl-1.0.1/Bio/SeqIO.html 功能:格式转换例如:SwissProt格式转化为Fasta格式#! /usr/bin/perl–wuse strict;use Bio::SeqIO;my $in = Bio::SeqIO->newFh( -file => ’<seqs.sp’, -format => ’swiss’);my $out = Bio::SeqIO->newFh( -file => ’>seqs.fasta’, -format => ’fasta’);print $out $_ while <$in>;phred output phdQuality values (get a sequence of quality scores)qual GAME XML format gameACeDB sequence format aceRaw format (one sequence per line, no ID) rawGCG format GCGProtein Information Resource format PIRSCF tracefile format SCFSwissprot format swissGenBank format GenBankEMBL format EMBLFASTA format Fastadescription formatBio::SeqIO->newFh 中的format 说明:Swissprot格式ID 7LES_DROME STANDARD; PRT; 2554 AA.AC P13368; Q9TYI0; Q9U5V7; Q9VZ36;DT 01-JAN-1990 (Rel. 13, Created)DT 16-OCT-2001 (Rel. 40, Last sequence update)DT 15-JUN-2004 (Rel. 44, Last annotation update)DE Sevenless protein (EC 2.7.1.112).GN SEV OR HD-265 OR CG18085.OS Drosophila melanogaster(Fruit fly).OC Eukaryota; Metazoa; Arthropoda; Hexapoda; Insecta; Pterygota;OC Neoptera; Endopterygota; Diptera; Brachycera; Muscomorpha;OC Ephydroidea; Drosophilidae; Drosophila.OX NCBI_TaxID=7227;RN [1]RP SEQUENCE FROM N.A.RC STRAIN=Canton-S;RX MEDLINE=88282538; PubMed=2840202;RA Basler K., Hafen E.;RT "Control of photoreceptor cell fate by the sevenless protein requiresRT a functional tyrosine kinase domain.";RL Cell 54:299-311(1988).RN [2]RP SEQUENCE FROM N.A.RC STRAIN=Oregon-R;RX MEDLINE=88329706; PubMed=3138161;RA Bowtell D.L.L., Simon M.A., Rubin G.M.;RT "Nucleotide sequence and structure of the sevenless gene ofRT Drosophila melanogaster.";RL Genes Dev. 2:620-634(1988).CC -!-FUNCTION: Receptor for an extracellular signal required toCC instruct a cell to differentiate into an R7 photoreceptor. TheCC ligand for sev is the boss (bride of sevenless) protein on theCC surface of the neighboring R8 cell.CC -!-CATALYTIC ACTIVITY: ATP + a protein tyrosine = ADP + protein CC tyrosine phosphate.CC -!-SUBUNIT: May form a complex with drk and Sos.CC -!-DOMAIN: It is unclear whether the potential membrane spanning CC region near the N-terminus is present as a transmembrane domain inCC the native protein or serves as a cleaved signal sequence.CC -!-SIMILARITY: Belongs to the Tyr family of protein kinases. Insulin CC receptor subfamily.CC -!-SIMILARITY: Contains 7 fibronectin type III domains.CCDR EMBL; J03158; AAA28882.1; -.DR EMBL; X13666; CAA31960.1; ALT_INIT.DR EMBL; X13666; CAB55310.1; -.DR EMBL; AE003484; AAF47992.2; -.DR EMBL; AJ002917; CAA05752.1; -.DR PIR; A28912; TVFF7L.DR HSSP; P08069; 1JQH.DR FlyBase; FBgn0003366; sev.DR GO; GO:0005886; C:plasma membrane; IDA.DR GO; GO:0004713; F:protein-tyrosine kinase activity; IDA.DR GO; GO:0045467; P:R7 development; NAS.DR GO; GO:0008293; P:torso signaling pathway; NAS.DR InterPro; IPR003961; FN_III.DR InterPro; IPR008957; FN_III-like.DR InterPro; IPR000033; Ldl_receptor_rep.DR InterPro; IPR000719; Prot_kinase.DR InterPro; IPR002011; RecepttyrkinsII.DR InterPro; IPR001245; Tyr_pkinase.DR InterPro; IPR008266; Tyr_pkinase_AS.DR Pfam; PF00041; fn3; 6.DR Pfam; PF00069; Pkinase; 1.DR PRINTS; PR00109; TYRKINASE.DR ProDom; PD000001; Prot_kinase; 1.DR SMART; SM00060; FN3; 6.DR SMART; SM00135; LY; 2.DR SMART; SM00219; TyrKc; 1.DR PROSITE; PS50853; FN3; 7.DR PROSITE; PS00107; PROTEIN_KINASE_ATP; 1.DR PROSITE; PS50011; PROTEIN_KINASE_DOM; 1.DR PROSITE; PS00109; PROTEIN_KINASE_TYR; 1.DR PROSITE; PS00239; RECEPTOR_TYR_KIN_II; 1.KW Transferase; Tyrosine-protein kinase; Receptor; Vision; Transmembrane; KW Glycoprotein; ATP-binding; Phosphorylation; Repeat.FT DOMAIN 1 2123 Extracellular(Potential).FT TRANSMEM 2124 2147 Potential.FT DOMAIN 2148 2554 Cytoplasmic(Potential).FT DOMAIN 311 431 Fibronectin type-III 1.FT DOMAIN 436 528 Fibronectin type-III 2.FT DOMAIN 822 921 Fibronectin type-III 3.FT DOMAIN 1298 1392 Fibronectin type-III 4.FT DOMAIN 1680 1794 Fibronectin type-III 5.FT DOMAIN 1797 1897 Fibronectin type-III 6.FT DOMAIN 1898 1988 Fibronectin type-III 7.FT DOMAIN 2038 2046 Poly-Arg.FT DOMAIN 2209 2485 Protein kinase.FT CONFLICT 2271 2271C -> R (in Ref. 1).SQ SEQUENCE 2554 AA; 287022 MW; 09E238A0F27684F8 CRC64;MTMFWQQNVD HQSDEQDKQA KGAAPTKRLN ISFNVKIAVN VNTKMTTTHI NQQAPGTSSS SSNSQNASPS KIVVRQQSSS FDLRQQLARL GRQLASGQDG HGGISTILII NLLLLILLSI CCDVCRSHNY TVHQSPEPVS KDQMRLLRPK LDSDVVEKVA IWHKHAAAAP PSIVEGIAIS SRPQSTMAHH PDDRDRDRDP SEEQHGVDER MVLERVTRDC VQRCIVEEDL FLDEFGIQCE KADNGEKCYK TRCTKGCAQW YRALKELESC QEACLSLQFY PYDMPCIGAC EMAQRDYWHL QRLAISHLVE RTQPQLERAP RADGQSTPLT IRWAMHFPEH YLASRPFNIQ YQFVDHHGEE LDLEQEDQDA SGETGSSAWF NLADYDCDEY YVCEILEALI PYTQYRFRFE LPFGENRDEV LYSPATPAYQ TPPEGAPISA PVIEHLMGLD DSHLAVHWHP GRFTNGPIEG YRLRLSSSEG•Sequence类–创建一条序列use Bio::Seq;my $seq1 = Bio::Seq->new (-seq=> ’ATGAGTAGTAGTAAAGGTA’,-id => ’my seq’,-desc=> ’this is a new Seq’);–读取序列文件use Bio::SeqIO;my $seqin= Bio::SeqIO->new( -file => ’seq.fasta’,-format => ’fasta’);my $seq3 = $seqin->next_seq();use Bio::SeqIO;my $seqin2 = Bio::SeqIO->newFh( -file => ’seq.fasta’,-format => ’fasta’); my $seq4 = <$seqin2>;–从远程数据库中获取序列举例:•Create a sequence object for the MALK_ECOLI SwissProtentry•Print its Accession number and descriptionuse Bio::DB::SwissProt;my $database = new Bio::DB::SwissProt;my $seq= $database->get_Seq_by_id(’MALK_ECOLI’);print "Seq: ", $seq->accession_number(), " --", $seq->desc(), "\n\n"; Seq: P68187--Maltose/maltodextrin import ATP-binding protein malK(EC3.6.3.19).–根据SwissProt entry获取PDB结构entry$annotation = $seq->annotation();my @structures = ();foreach my $link ( $annotation->get_Annotations(’dblink’) ) { if ($link->database() eq’PDB’) {push (@structures, $link->primary_id());}}print "\nPDB Structures: ", join (" ", @structures), "\n";•Features and Location classes –Features class–Location class•Features Classes–Bio::SeqFeatureI–Bio::SeqFeature::Generic–Bio::SeqFeature::FeaturePair–Bio::SeqFeature::SimilarityPair–Bio::SeqFeature::Similarity–Bio::SeqFeature::Gene::–Bio::SeqFeature::Gene::ExonI–Bio::SeqFeature::Gene::Exon–Bio::SeqFeature::Gene::Transcript–Bio::SeqFeature::Gene::TranscriptI–Bio::SeqFeature::Gene::GeneStructureI –Bio::SeqFeature::Gene::GeneStructure–Adding a feature to a Genbank entryuse Bio::SeqFeature::Generic;use Bio::SeqIO;$in = Bio::SeqIO->newFh(-file => $ARGV[0]);$out = Bio::SeqIO->newFh();$seq= <$in>;$feat = new Bio::SeqFeature::Generic( -start => 10, -end => 100,-strand => -1,-primary => 'repeat',-source => 'repeatmasker',-score => 1000,-tag => {new => 1,author => 'someone',sillytag=> 'this is silly!' } ); $seq->add_SeqFeature($feat);print $out $seq;增加前的特征项:FEATURES Location/Qualifiers source 1..16705/organism="Pteropus dasymallus"/organelle="mitochondrion"/mol_type="genomic DNA"/db_xref="taxon:126282"gene 1..69/gene="tRNA-Phe“……………gene 15321..15390/gene="tRNA-Thr"tRNA15321..15390/gene="tRNA-Thr"gene complement(15390..15455)/gene="tRNA-Pro"tRNA complement(15390..15455)/gene="tRNA-Pro"D-loop 15456..16705/note="D-loop region"增加后的特征项:FEATURES Location/Qualifiers……….D-loop 15456..16705/note="D-loop region"repeat complement(10..100)/new="1"/author="someone"/sillytag="this is silly!"/note="score=1000"•Location Classes–Bio::LocationI–Bio::Location::Simple–Bio::Location::SplitLocationIet Bio::Location::Split–Bio::Location::FuzzyLocationIet Bio::Location::Fuzzy –Coordinate policies, for fuzzy location start and enddetermination:•interface: Bio::Location::CoordinatePolicyI,•default: Bio::Location::WidestCoordPolicy•Bio::Location::NarrowestCoordPolicy,Bio::Location::AvWithinCoordPolicy–specifies a location whose begin is before 30 and whose end is at 90my $fuzzylocation= new Bio::Location::Fuzzy(-start => ’<30’,-end => 90,-loc_type=> ’.’);符号说明:–’..’: EXACT–’^’: BETWEEN (a site between 2 bases), exemple: 123^124a site between bases 123 and 124. 145^177 a site between 2adjacent bases, somewhere between bases 145 and 177.–’.’: WITHIN (a base within a range), example : (102.110) is a site wihtin the 102 .. 110 range, inclusive.–’<’: BEFORE–’>’: AFTER•Sequence analysis tools–Bio::Tools::SeqStats/releases/bioperl-1.0.1/Bio/Tools/SeqStats.html –Bio::Tools::SeqWordshttp:/releases/bioperl-1.0.1/Bio/Tools/SeqWords.html/–Bio::Tools::SeqPattern/releases/bioperl-1.0.1/Bio/Tools/SeqPattern.html –Bio::SeqUtils/releases/bioperl-1.0.1/Bio/Tools/SeqUtils.html –Bio::Tools::RestrictionEnzyme/releases/bioperl-1.0.1/Bio/Tools/RestrictionEnzyme.html–Bio::Tools::Sigcleave/releases/bioperl-1.0.1/Bio/Tools/Sigcleave.html–Bio::Tools::SeqStats$seq_stats= Bio::Tools::SeqStats->new(-seq=>$seqobj); $seq_stats->count_monomers();$seq_stats->count_codons();$weight = $seq_stats->get_mol_wt($seqobj);–Bio::Tools::SeqWords$seq_word= Bio::Tools::SeqWords->new(-seq=> $seqobj); $seq_stats->count_words($word_length);–Bio::Tools::SeqPattern$pat = ’T[GA]AA...TAAT’;$pattern = new Bio::Tools::SeqPattern(-SEQ =>$pat, -TYPE=>’Dna’); $pattern->expand;$pattern->revcom;$pattern->alphabet_ok;–Bio::Tools::RestrictionEnzyme$re1 = new Bio::Tools::RestrictionEnzyme(-NAME =>’EcoRI’);@fragments = $re1->cut_seq($seqobj);$re2 = new Bio::Tools::RestrictionEnzyme( -NAME =>’EcoRV--GAT^ATC’, -MAKE =>’custom’);–Bio::Tools::Sigcleave$sigcleave_object= new Bio::Tools::Sigcleave(’-file’=>’sigtest.aa’,’-threshold’=>’3.5’,’-desc’=>’test sigcleave protein seq’,’-type’=>’AMINO ’); %raw_results= $sigcleave_object->signals;$formatted_output= $sigcleave_object->pretty_print;2.Alignments类–Bio::AlignIO/releases/bioperl-1.0/Bio/AlignIO.html –Bio::SimpleAlign/releases/bioperl-1.0/Bio/SimpleAlign.html –Bio::Tools::CodonTable/releases/bioperl-1.0/Bio/Tools/CodonTable.html–Bio::AlignIOFormat conversions with AlignIO:use Bio::AlignIO;$inputfilename= "testaln.fasta";$in = Bio::AlignIO->new(-file => $inputfilename, '-format' => 'fasta'); $out = Bio::AlignIO->new(-file => ">out.aln.pfam" , '-format' => 'pfam'); while ( my $aln= $in->next_aln() ) {$out->write_aln($aln);}Alignment result:use Bio::AlignIO;my $in = new Bio::AlignIO( -file =>, $ARGV[0], -format => 'clustalw' );my $aln= $in->next_aln();print "same length of all sequences: ", ($aln->is_flush()) ? "yes" : "no", "\n"; print "alignment length: ", $aln->length(), "\n";printf"identity: %.2f %%\n", $aln->percentage_identity();printf"identity of conserved columns: %.2f %%\n",$aln>overall_percentage_identity();infile.ALN文件内容:CLUSTAL W (1.82) multiple sequence alignmentBACR_HALAR ---------------MPEPGSEAIWLWLGTAGMFLGMLYFIARGWGETDSRRQKFYIATI BACR_HALHP -----------------------IWLWLGTAGMFLGMLYFIARGWGETDSRRQKFYIATI BACR_HALVA ---------------MPAPEGEAIWLWLGTAGMFLGMLYFIARGWGETDSRRQKFYIATI BACR_HALHS -------------------------LWLGTAGMFLGMLYFIARGWGETDGRRQKFYIATI BACR_HALSR --------MLQSGMSTYVPGGESIFLWVGTAGMFLGMLYFIARGWSVSDQRRQKFYIATI BACR_HALHA MLELLPTAVEGVSQAQITGRPEWIWLALGTALMGLGTLYFLVKGMGVSDPDAKKFYAITT BACR_HALHM --------------------------GIGTLLMLIGTFYFIARGWGVTDKKAREYYAITI. :** * :* :**:.:* . :* :::* *BACR_HALAR LITAIAFVNYLAMALGFGLTIVEFAGEEHP--IYWARYSDWLFTTPLLLYDLGLLAGADR BACR_HALHP LITAIAFVNYLAMALGFGLTIVEFAGEEHP--IYWARYSDWLFTTPLLLYDLGLLAGADR BACR_HALVA LITAIAFVNYLAMALGFGLTIVEIAGEQRP--IYWARYSDWLFTTPLLLYDLGLLAGADR BACR_HALHS LITAIAFVNYLAMALGFGLTFIEFGGEQHP--IYWARYTDWLFTTPLLLYDLGLLAGADR BACR_HALSR MIAAIAFVNYLSMALGFGVTTIELGGEERA--IYWARYTDWLFTTPLLLYDLALLAGADR BACR_HALHA LVPAIAFTMYLSMLLGYGLTMVPFGGEQNP--IYWARYADWLFTTPLLLLDLALLVDADQ BACR_HALHM LVPGIASAAYLSMFFGIGLTTVEVAGMAEPLEIYYARYADWLFTTPLLLLDLALLANADR ::..** . **:* :* *:* : ..* .. **:***:********** **.**..**:BACR_HALAR NTITSLVSLDVLMIGTGLVATLSPGSGVLSAGAERLVWWGISTAFLLVLLYFLFSSLSGR BACR_HALHP NTITSLVSLDVLMIGTGLVATLSAGSGVLSAGAERLVWWGISTAFLLVLLYFLFSSLSGR BACR_HALVA NTISSLVSLDVLMIGTGLVATLSAGSGVLSAGAERLVWWGISTAFLLVLLYFLFSSLSGR BACR_HALHS NTIYSLVSLDVLMIGTGVVATLSAGSGVLSAGAERLVWWGISTAFLLVLLYFLFSSLSGR BACR_HALSR NTIYSLVGLDVLMIGTGALATLSAGSGVLPAGAERLVWWGISTGFLLVLLYFLFSNLTDR BACR_HALHA GTILALVGADGIMIGTGLVGALT------KVYSYRFVWWAISTAAMLYILYVLFFGFTSK BACR_HALHM TTIGTLIGVDALMIVTGLIGALS------HTPLARYTWWLFSTIAFLFVLYYLLTVLRSA ** :*:. * :** ** :.:*:..:. . * .** :** :* :** *: : .BACR_HALAR VADLPSDTRSTFKTLRNLVTVVWLVYPVWWLIGTEGIGLVGIGIETAGFMVIDLTAKVGF BACR_HALHP VADLPSDTRSTFKTLRNLVTVVWLVYPVWWLIGTEGIGLVGIGIETAGFMVIDLTA----BACR_HALVA VADLPSDTRSTFKTLRNLVTVVWLVYPVWWLVGTEGIGLVGIGIETAGFMVIDLVAKVGF BACR_HALHS VANLPSDTRSTFKTLRNLVTVVWLVYPVWWLVGSEGLGLVGIGIETAGFMVIDLVA----BACR_HALSR ASELSGDLQSKFSTLRNLVLVLWLVYPVLWLVGTEGLGLVGLPIETAAFMVLDLTAKIGF BACR_HALHA AESMRPEVASTFKVLRNVTVVLWSAYPVVWLIGSEGAGIVPLNIETLLFMVLDVSAKVGF BACR_HALHM AAELSEDVQTTFNTLTALVAVLWTAYPILWIIGTEGAGVVGLGVETLAFMVLDVTA----. .: : :.*..* :. *:* .**: *::*:** *:* : :** ***:*: *. . BACR_HALAR GIILLRS---HGVLDGAAETTGTGATPADDBACR_HALHP ------------------------------BACR_HALVA GIILLRS---HGVLDGAAETTGAGATATADBACR_HALHS ------------------------------BACR_HALSR GIILLQS---HAVLD-EGQTASEGAAVAD-BACR_HALHA GLILLRSRAIFGEAEAPEPSAGDGAAATSDBACR_HALHM ------------------------------. : . .. ::. .:: : .屏幕输出:same length of all sequences: yesalignment length: 270identity: 69.99 %identity of conserved columns: 28.52 %3.Analysis类–Blast/bioperl-live/–Genscan/releases/bioperl-1.0/Bio/Tools/Genscan.html•Blast–Bio::Tools::Run::StandAloneBlastRunning local Blastuse Bio::SeqIO;use Bio::Tools::Run::StandAloneBlast;my $Seq_in= Bio::SeqIO->new (-file => $ARGV[0], -format => 'fasta');my $query = $Seq_in->next_seq();my $factory = Bio::Tools::Run::StandAloneBlast->new('program' => 'blastp','database' => 'swissprot',);my $blast_report= $factory->blastall($query);my $result = $blast_report->next_result;while( my $hit = $result->next_hit()) {print "\thit name: ", $hit->name(), " significance: ", $hit->significance(), "\n";}Running Blast on a Swissprot entryuse Bio::SeqIO;use Bio::Tools::Run::StandAloneBlast;use Bio::DB::SwissProt;my $database = new Bio::DB::SwissProt;my $query = $database->get_Seq_by_id(’TAUD_ECOLI’);my $factory = Bio::Tools::Run::StandAloneBlast->new(’program’=> ’blastp’,’database’=> ’swissprot’,); my $blast_report= $factory->blastall($query);my $result = $blast_report->next_result;while( my $hit = $result->next_hit()) {print "\thit name: ", $hit->name()," significance: ", $hit->significance(), "\n";}Parsing from a Blast run resultuse Bio::SeqIO;use Bio::Tools::Run::StandAloneBlast;my $Seq_in= Bio::SeqIO->new (-file => $ARGV[0], -format => 'fasta');my $query = $Seq_in->next_seq();my $factory = Bio::Tools::Run::StandAloneBlast->new('program' => 'blastp','database' => 'swissprot',); my $blast_report= $factory->blastall($query);my $result = $blast_report->next_result;while( my $hit = $result->next_hit()) {print "\thit name: ", $hit->name(), " significance: ", $hit->significance(), "\n";while( my $hsp= $hit->next_hsp()) {print "E: ", $hsp->evalue(), "frac_identical: ", $hsp->frac_identical(), "\n";}}Parsing from a Blast fileuse Bio::SearchIO;my $blast_report= new Bio::SearchIO('-format' => 'blast', '-file' => $ARGV[0]); my $result = $blast_report->next_result;while( my $hit = $result->next_hit()) {print "\thit name: ", $hit->name(), "\n";while( my $hsp= $hit->next_hsp()) {print "E: ", $hsp->evalue(), "frac_identical: ", $hsp->frac_identical(), "\n";}}Running bl2sequse Bio::SeqIO;use Bio::Tools::Run::StandAloneBlast;my $query1_in = Bio::SeqIO->newFh( -file => $ARGV[0], -format => 'fasta' ); my $query1 = <$query1_in>;my $query2_in = Bio::SeqIO->newFh( -file => $ARGV[1], -format => 'fasta' ); my $query2 = <$query2_in>;$factory = Bio::Tools::Run::StandAloneBlast->new('program' => 'blastp'); $report = $factory->bl2seq($query1, $query2);while(my$hsp= $report->next_feature) {print "homology seq:\n", $hsp->homologySeq, "\n";print "sbjctSeq:\n", $hsp->sbjctSeq, "\n";}•Genscan–Bio::Tools::GenscanGenscan parsinguse Bio::Tools::Genscan;my $genscan_file= $ARGV[0];$genscan= Bio::Tools::Genscan->new(-file => $genscan_file);while(my$gene = $genscan->next_prediction()) {my $prot= $gene->predicted_protein;print "protein :\n", $prot->seq, "\n\n";}Genscan.out文件内容:GENSCAN 1.0Date run: 20-Jan-98Time: 11:02:22Sequence HUMRASH : 6453 bp: 68.19% C+G : Isochore 4 (57.00 -100.00 C+G%) Parameter matrix: HumanIso.smatPredicted genes/exons:Gn.Ex Type S .Begin ...End .Len Fr Ph I/Ac Do/T CodRg P.... Tscr..------------------------------------------------------1.01 Init + 1664 1774 111 1 0 94 83 212 0.997 21.331.02 Intr+ 2042 2220 179 1 2 104 66 408 0.997 40.121.03 Intr+ 2374 2533 160 1 1 89 94 302 0.999 32.081.04 Term + 3231 3350 120 2 0 115 48 202 0.961 18.31Predicted peptide sequence(s):>HUMRASH|GENSCAN_predicted_peptide_1|189_aa MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAG QEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDL AARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS屏幕显示内容:protein: MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLC VFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLV REIRQHKLRKLNPPDESGPGCMSCKCVLSGenscan parsing, with sub-sequencesuse Bio::Tools::Genscan;my $genscan_file= $ARGV[0];$genscan= Bio::Tools::Genscan->new(-file => $genscan_file); while(my$gene = $genscan->next_prediction()) {my $prot= $gene->predicted_protein;print "protein :\n", $prot->seq, "\n\n";# display genscan predicted cds(if -cds genscan option) my $predicted_cds= $gene->predicted_cds;print "predicted CDS: \n", $predicted_cds->seq, "\n\n";foreach my $exon($gene->exons()) {my $loc = $exon->location;print "exon-primary_tag: ",$exon->primary_tag, " coding? ",$exon->is_coding(), " start-end: ", $loc->start, "-", $loc->end, "\n";}foreach my $intron($gene->introns()) {my $loc = $intron->location;print "intron primary_tag: ",$intron->primary_tag, " start-end: ",$loc->start, "-", $loc->end, "\n";}print "---------------------------------\n";}输入文件:GENSCAN 1.0Date run: 30-Oct-101Time: 17:32:04Sequence HUMRASH : 6453 bp: 68.19% C+G : Isochore 4 (57 -100 C+G%)Parameter matrix: HumanIso.smatPredicted genes/exons:Gn.Ex Type S .Begin ...End .Len Fr Ph I/Ac Do/T CodRg P.... Tscr..------------------------------------------------------1.01 Init + 1664 1774 111 1 0 94 83 212 0.997 21.33 1.02 Intr+ 2042 2220 179 1 2 104 66 408 0.997 40.12 1.03 Intr+ 2374 2533 160 1 1 89 94 302 0.999 32.08 1.04 Term + 3231 3350 120 2 0 115 48 202 0.961 18.31Predicted peptide sequence(s):Predicted coding sequence(s):>HUMRASH|GENSCAN_predicted_peptide_1|189_aa MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAG QEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDL AARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPG CMSCKCVLS>HUMRASH|GENSCAN_predicted_CDS_1|570_bp atgacggaatataagctggtggtggtgggcgccggcggtgtgggcaagagtgcgctgacc atccagctgatccagaaccattttgtggacgaatacgaccccactatagaggattcctac cggaagcaggtggtcattgatggggagacgtgcctgttggacatcctggataccgccggc caggaggagtacagcgccatgcgggaccagtacatgcgcaccggggagggcttcctgtgt gtgtttgccatcaacaacaccaagtcttttgaggacatccaccagtacagggagcagatc aaacgggtgaaggactcggatgacgtgcccatggtgctggtggggaacaagtgtgacctg gctgcacgcactgtggaatctcggcaggctcaggacctcgcccgaagctacggcatcccc tacatcgagacctcggccaagacccggcagggagtggaggatgccttctacacgttggtg cgtgagatccggcagcacaagctgcggaagctgaaccctcctgatgagagtggccccggc tgcatgagctgcaagtgtgtgctctcctga输出文件:protein: MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLC VFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLV REIRQHKLRKLNPPDESGPGCMSCKCVLSpredicted CDS: atgacggaatataagctggtggtggtgggcgccggcggtgtgggcaagagtgcgctgaccatccagctgatccagaacca ttttgtggacgaatacgaccccactatagaggattcctaccggaagcaggtggtcattgatggggagacgtgcctgttgg acatcctggataccgccggccaggaggagtacagcgccatgcgggaccagtacatgcgcaccggggagggcttcctgtgt gtgtttgccatcaacaacaccaagtcttttgaggacatccaccagtacagggagcagatcaaacgggtgaaggactcgga tgacgtgcccatggtgctggtggggaacaagtgtgacctggctgcacgcactgtggaatctcggcaggctcaggacctcg cccgaagctacggcatcccctacatcgagacctcggccaagacccggcagggagtggaggatgccttctacacgttggtg cgtgagatccggcagcacaagctgcggaagctgaaccctcctgatgagagtggccccggctgcatgagctgcaagtgtgt gctctcctgaexon-primary_tag: Initial coding? 1 start-end: 1664-1774exon-primary_tag: Internal coding? 1 start-end: 2042-2220exon-primary_tag: Internal coding? 1 start-end: 2374-2533exon-primary_tag: Terminal coding? 1 start-end: 3231-3350intron primary_tag: intron start-end: 1775-2041intron primary_tag: intron start-end: 2221-2373intron primary_tag: intron start-end: 2534-3230---------------------------------4.Databases类–Bio::Index::Swissprotuse Bio::Index::Swissprot;use Bio::SeqIO;my $out = Bio::SeqIO->newFh(-fh=>\*STDOUT, -format=>'fasta');my $Index_File_Name= shift;my $inx= Bio::Index::Swissprot->new(-filename=>$Index_File_Name); foreach my $id (@ARGV) {my $seq= $inx->fetch($id);print $out $seq;}7.3 实例1.获取序列统计信息–分子量、残基、密码子使用频度#!/usr/bin/perluse warnings;use Bio::Seq;use Bio::Tools::SeqStats ;$seqobj = Bio::Seq->new(-seq =>"aaaatgggggggggggccccgtt",-display_id => "#12345",-desc => "example 1" );$seq_stats = Bio::Tools::SeqStats->new($seqobj);$weight = $seq_stats->get_mol_wt();$monomer_ref = $seq_stats->count_monomers();$codon_ref = $seq_stats->count_codons();print "$weight\n$monomer_ref\n$codon_ref\n";ARRAY(0x1bf9024)HASH(0x1be0e98)HASH(0x1bf94d4)2.识别限制性酶切位点#!/usr/bin/perluse warnings;use Bio::Seq;use Bio::Tools::RestrictionEnzyme;$seqobj= Bio::Seq->new(-seq=>"aaaatgggggggggggccccgtt",-display_id=> "#12345",-desc=> "example 1" );$re = new Bio::Tools::RestrictionEnzyme(-NAME =>'EcoRI');@sixcutters= $re->available_list();$re1 = new Bio::Tools::RestrictionEnzyme(-NAME =>'EcoRI');@fragments = $re1->cut_seq($seqobj);print "@sixcutters\n@fragments";3.识别氨基酸剪切位点#!/usr/bin/perl use warnings;use Bio::Seq;use Bio::Tools::Sigcleave;$seqobj = Bio::Seq->new(-seq=>"AALLHHHHHHGGGGPPRTTTTTVVVVVVVVVVVVVVV");$sigcleave_object = new Bio::Tools::Sigcleave(-seq=>$seqobj, -threshod=>3.5,-desc=>'test sigcleave protein seq',-type=>'AMINO');$formatted_output = $sigcleave_object->pretty_print;print "$formatted_output\n";SIGCLEAVE of NONAME from: 1 to 37Report scores over 3.5Maximum score 3.6 at residue 3Sequence: AA--------------LLHHHHHHGGGGPPRTTTTTVVVVVVVVVVVVVVV | (signal) | (mature peptide)1 3。