200 likes | 362 Views
Perl kalbos biblioteka BioPerl. Doc. Robertas Damaševičius KTU Programų inžinerijos katedra, Studentų 50-415 Email: damarobe @soften.ktu.lt. BioPerl. Bioinformaciniams skaičiavimams skirtų Perl klasių biblioteka Naudota žmogaus genomo dekodavimo projekte
E N D
Perl kalbos biblioteka BioPerl Doc. Robertas Damaševičius KTU Programų inžinerijos katedra, Studentų 50-415 Email: damarobe@soften.ktu.lt
BioPerl Perl and BioPerl - Craig A. Struble Bioinformaciniams skaičiavimams skirtų Perl klasių biblioteka Naudota žmogaus genomo dekodavimo projekte Geriausiai išvystyta: bibliotekos kitoms kalboms (BioJava, BioPython) dar tik kuriamos http://www.bioperl.org
BioPerl sprendžiamos problemos Bioinformatika (B110M100) Priėjimas prie vietinėse ir nutolusiose duomenų bazėse saugomų sekų duomenų Duomenų bazių ir failų įrašų formatų transformavimas Atskirų sekų apdorojimas Panašių sekų paieška Sekų sugretinimas Genų ir kitų DNR struktūrinių elementų paieška Kompiuterio skaitomų sekų anotacijų sukūrimas
Pagrindiniai BioPerl moduliai (1) Bioinformatika (B110M100)
Pagrindiniai BioPerl moduliai (2) Bioinformatika (B110M100) 5
Funkcijos darbui su sekomis • get_sequence - seka parsiunčiama internetu iš standartinių nutolusių duomenų bazių • read_sequence - seka skaitima iš failo • read_all_sequences – visos sekos skaitomos iš failo • new_sequence - seka sukūriama iš eilutės • write_sequence - seka įrašoma į failą • translate - atliekamas sekos transliavimas • blast_sequence - atliekamas sekos sugretinimas su nutolusiose DB saugomomis sekomis naudojant BLAST algoritmą • write_blast - BLAST ataskaita išsaugoma faile
Sekos sukūrimas: objektinis Bioinformatika (B110M100) $seq = Bio::Seq->new(’-seq’=>’actgtggcgtcaact’, ’-desc’=>’Sample Bio::Seq object’, ’-display_id’ => ’something’, ’-accession_number’ => ’accnum’, ’-moltype’ => ’dna’ ); Sukuriamas Bio::Seq tipo objektas, kurio savybei –seq priskiriama eilutės tipo seka.
Sekos sukūrimas: funkcinis $seq = new_sequence("GATTACA", "enzyme“, “X1”); • Grąžinama reikšmė: Bio::Seq tipo objektas • Argumentai: • Seka • Sekos pavadinimas (galima nenurodyti) • Sekos numeris (galima nenurodyti)
Priėjimas prie nutolusiose duomenų bazėse saugomų sekų Bioinformatika (B110M100) $gb = new Bio::DB::GenBank(); $seq1 = $gb->get_Seq_by_id(’MUSIGHBA1’); $seq2 = $gb->get_Seq_by_acc(’AF303112’)) • Objektinis priėjimas prie GenBank duomenų bazės • Duomenys gali būti paimami pagal • sekos prieigos numerį (get_Seq_by_acc) arba • kodą (get_Seq_by_id)
Priėjimas prie nutolusiose DB saugomų sekų: funkcinis Bioinformatika (B110M100) 10 $seq = get_sequence('swiss', "ROA1_HUMAN"); • Funkcinis priėjimas prie GenBank duomenų bazės • Grąžinama reikšmė: Bio::Seq tipo objektas • Argumentai • Duomenų bazės pavadinimas (‘swissprot', 'genbank', 'genpept', 'embl', 'refseq') • Sekos pavadinimas
Duomenų bazių ir failų įrašų formatų transformavimas Bioinformatika (B110M100) use Bio::SeqIO; $in = Bio::SeqIO->new(’-file’ => "infile", ’-format’ => ’Fasta’); $out = Bio::SeqIO->new(’-file’ => ">outfile", ’-format’ => ’EMBL’); while ( my $seq = $in->next_seq() ) { $out->write_seq($seq); } Objektinis sekos saugomos FASTA formatu transformavimas į EMBL formatą Formatui nurodyti naudojama Bio::SeqIO objekto savybė format Galimos formato reikšmės: ‘Fasta’, EMBL, ‘Genbank’
DB ir failų įrašų formatų transformavimas: funkcinis Bioinformatika (B110M100) 12 write_sequence(">new_file.gb", 'genbank', $seq); • Įrašo seką nurodytu formatu į failą • Argumentai: • Failo pavadinimas • Formatas (‘Fasta’, EMBL, ‘Genbank’) • Bio:Seq tipo sekos objektas
Sekų apdorojimas Bioinformatika (B110M100) • Nukleotidų sekos transliavimas: • Objektiškai: naudojamas Bio::Seq objekto metodas translate() $my_seq_object = new Bio::Seq(); $translation1 = new Bio::PreSeq(); $translation1 = $my_seq_object->translate; • Funkciškai: naudojama funkcija translate $seq2 = translate($seq2); • Argumentas: sekos tipo objektas • Grąžinama: skos tipo objektas
1 pavyzdys: darbas su funkcijomis use Bio::Perl; $seq_object = get_sequence('swiss', "ROA1_HUMAN"); print "Sekos pavadinimas: ", $seq_object->display_id, "\n"; print "Sekos numeris: ", $seq_object->accession_number, "\n"; print "Seka: ", $seq_object->seq(), "\n"; write_sequence(">roa1.fasta", 'fasta', $seq_object); $nseq = read_sequence("roa1.fasta"); $seq2 = new_sequence("ATTGGTTTGGGGACCCAATTTGTGTGTTATATGTA", "MANO_SEKA", "AL12232"); print "Sekos pavadinimas: ", $seq2>display_id, "\n"; print "Sekos numeris: ", $seq2->accession_number, "\n"; print "Seka: ", $seq2->seq(), "\n"; $seq3 = translate($seq2); print "Amino rugsciu seka: ", $seq3->seq(), "\n";
2 pavyzdys: darbas su objektais use Bio::Perl; $gb = new Bio::DB::GenBank; $seqio = $gb->get_Stream_by_id(["J00522", "AF303112", "2981014"]); print "Sekos: \n"; while (my $seq = $seqio->next_seq) { print "Sekos numeris: ", $seq->accession_number, "\n"; print "Sekos ilgis: ", $seq->length, "\n"; print "Seka:", $seq->seq(), "\n"; } $seqio = $gb->get_Stream_by_id(["J00522", "AF303112", "2981014"]); my $seq_out = Bio::SeqIO->new('-file' => ">gb_sekos.fa", '-format' => 'Fasta'); while (my $seq = $seqio->next_seq()) { $seq_out->write_seq($seq); }
Sekos statistinė informacija Bioinformatika (B110M100) use SeqStats; $seq_stats = Bio::Tools::SeqStats->new($seqobj); $weight = $seq_stats->get_mol_wt(); # sekos molekulinis svoris $codon_ref = $seq_stats->count_codons(); # kodonu skaicius sekoje • Naudojami Bio::Tools::SeqStats objekto metodai.
3 pavyzdys use Bio::Perl; use Bio::Tools::SeqStats; $seqobj = get_sequence('genbank',"AF303112"); $seq_stats = Bio::Tools::SeqStats->new($seqobj); $weight = $seq_stats->get_mol_wt(); print "Mol svoris:", $$weight[0], "-", $$weight[1],"\n"; $monomer = $seq_stats->count_monomers(); print "Nukleotidu skaicius: \n"; foreach $base (sort keys %$monomer) { print $base, "= ", %$monomer->{$base},"\n"; } $codon = $seq_stats->count_codons(); print "Kodonu skaicius: \n"; foreach $base (sort keys %$codon) { print $base, "= ", %$codon->{$base},"\n"; }
Sekos sugretinimas su nutolusia duomenų baze naudojant BLAST Bioinformatika (B110M100) $input = Bio::Seq->new(’-id’=>"test query", ’-seq’=>"ACTAAGTGGGGG"); $blast_report = $factory->blastall($input); • Gražinamas blast_report objektas yra BPlite, BPpsilite, BPbl2seq arba Blast tipo priklausomai nuo paieškos tipo.
Sekos sugretinimas su nutolusia DB naudojant BLAST: funkcinis Bioinformatika (B110M100) 19 $blast_result = blast_sequence($seq) • Argumentas: sekos tipo objektas arba seka (eilutė) • Grąžinama reikšmė: BLAST tipo objektas • BLAST ataskaitos įrašymas: write_blast($filename,$blast_result); • Argumentai: • Failo vardas • BLAST objekto vardas
Šaltiniai Bioinformatika (B110M100) James Tisdall. Beginning Perl for Bioinformatics, O'Reilly (2001). Arthur W. Chou. Programming and Perl for Bioinformatics. http://cs.clarku.edu/~achou/binf101/index.htm Craig A. Struble. Perl and BioPerl. http://www.mscs.mu.edu/~cstruble/class/mscs230/fall2002/notes/PerlAndBioPerl.ppt Will Hsiao. An Introduction to Perl for bioinformatics. http://www.bioinformatics.ca/workshop_pages/bioinformatics2004_vancouver/talks/8.1_Lecture_Hsiao_2004_web.ppt