BIOPERL – MANIPOLAZIONE DI SEQUENZE BIOLOGICHE

Bioper è un pacchetto bioinformatico open-source usato dai ricercatori di tutto il mondo. Bioperl permette di: (1) manipolare sequenze (DNA, RNA e proteine) (2) recuperare sequenze dalle banche dati pubbliche (3) analizzare sequenze (BLAST) NOTA: prima di istanziare una qualsiasi classe <class_name> è necessario importarla all’inizio dello script use <class_name>;

tramite

Creazione di una sequenza
Oggetto: Bio::Seq

Esempio 1: use Bio::Seq; $seq_obj = Bio::Seq->new(); print $seq_obj->seq();

Esempio 2: use Bio::Seq; $seq_obj = Bio::Seq->new(-seq => "aaaatgggggggggggccccgtt", -display_id => "#12345", -desc => "example 1", -alphabet => "dna" ); print $seq_obj->seq();

Metodi: seq(): per recuperare la sequenza seq(arg_string): per settare la sequenza display_id(): per recuperare l’identificatore display_id(id_string): per settare l’identificatore primary_id(): per recuperare l’identificatore primario primary_id(primaryID_string): per settare l’identificatore primario desc(): per recuperare la descrizione desc(desc_string): per settare la descrizione accession_number(): per recuperare l’accession number accession_number(acc_string): per settare l’accession number length(): per recuperare la lunghezza della sequenza alphabet(): per recuperare l’alfabeto della sequenza (‘dna’, ‘rna’, ‘protein’) alphabet(alpha_string): per settare l’alfabeto della sequenza (‘dna’, ‘rna’, ‘protein’) subseq(start, end): per estrarre una parte della sequenza (restituisce una stringa) trunc(start, end): per estrarre una parte della sequenza (restituisce un oggetto Bio::Seq) revcom(): per effettuare il reverse&complement della sequenza (restituisce un oggetto Bio::Seq) translate(arg_list): per tradurre in proteina la sequenza (restituisce un oggetto Bio::Seq) seq_version(): per recuperare la versione seq_version(version_string): per settare la versione

1. 2) .un flag (0 o 1) per effettuare controlli sull’esistenza dello start ‘atg’ all’inizio e sull’esistenza dello stop alla fine .frame: il frame da cui far partire la traduzione (0 di default. . ‘RNA’. Eventuali aminoacidi sconosciuti sono indicati di default con ‘X’. ‘*’. $seq_obj=$io_obj1->next_seq().) get_dates(): per recuperare le date Traduzione di una sequenza Il metodo translate dell’oggetto Bio::Seq permette di: (1) tradurre completamente la sequenza a partire dal codone iniziale (frame 0): $prot_obj=$seq_obj->translate(). undef. 1): ->translate(‘-‘. Lo stop codon è di default indicato con ‘*’.terminator: il carattere che indica lo stop codon (di default ‘*’) . Per recuperare tutte le sequenze dell’oggetto bisogna invocare più volte il metodo (restituisce un oggetto Bio::Seq) write_seq(seq_object): scrive una specifica sequenza (oggetto Bio::Seq) sul file associato allo stream Esempio: use Bio::SeqIO. etc. ‘PRI’) molecule(): per recuperare il tipo di molecola (‘DNA’. 1. 1): ->translate(undef. $io_obj1=Bio::SeqIO->new(-file => ‘J01673.unknown: il carattere che indica eventuali aminoacidi sconosciuti (di default ‘X’) . (2) specificare i parametri della traduzione $prot_obj=$seq_obj ->translate(arg_list) Gli argomenti di arg_list sono nell’ordine: . Metodi: next_seq(): recupera la sequenza dallo stream associato all’oggetto.gb. 1.keywords(): per recuperare la lista delle parole chiave keywords(kw_list): per settare la lista delle parole chiave division(): per recuperare la division (es.un flag (0 o1) per stampare warnings se i controlli effettuati danno esito negativo . -format => ‘genbank’). ‘*’): ->translate(‘-‘.il tipo di codon table da utilizzare per codici genetici alternativi Esempi: $prot_obj=$ $prot_obj=$ $prot_obj=$ $prot_obj=$ seq_obj seq_obj seq_obj seq_obj ->translate(‘-‘. ‘*’. 1): Recupero di una sequenza da file e trasformazione di formato Oggetto: Bio::SeqIO => crea uno stream di input/output su un determinato file in un determinato formato Formati supportati: ‘embl’ ‘genbank’ ‘swiss’ ‘fasta’ Etc.

fasta’. Informazioni addizionali di una sequenza Oggetto: Bio::Tools::SeqStats Metodi: get_mol_wt(): per recuperare il peso molecolare della sequenza (restituisce il riferimento ad un array di 2 elementi contenente il lower e l’upper bound del peso molecolare) count_monomers(): per contare il numero di ogni tipo di base (o aminoacido) nella sequenza (restituisce il riferimento ad un array associativo in cui le chiavi sono le lettere dell’alfabeto della sequenza e i valori sono le relative occorrenze) count_codons(): per contare i codoni nelle sequenze nucleotidiche (restituisce il riferimento ad un array associativo in cui le chiavi sono i codoni della sequenza e i valori sono le relative occorrenze. $seq4_obj=$db_obj->get_Seq_by_gi(‘405830’). $db_obj=Bio::DB::GenBank->new(). -format => ‘fasta’). Recupero di una sequenza da una banca dati Oggetti: Bio::DB::GenBank Bio::DB::SwissProt Bio::DB::EMBL Etc. $io_obj2->write_seq($seq_obj).1’). $seq3_obj=$db_obj-> get_Seq_by_version ('J00522. $seq1_obj=$db_obj->get_Seq_by_id(‘MUSIGHBA1’). $seq2_obj=$db_obj->get_Seq_by_acc(‘AF303112’). $stream_obj=$db_obj->get_Stream_by_id(‘J00522’. codoni con basi ambigue sono contati insieme) .$io_obj2=Bio::SeqIO->new(-file => ‘>J01673. $seq_obj5=$stream_obj->next_seq(). ‘2981014’). Metodi: get_Seq_by_id(id_string): recupera dalla banca dati la sequenza con l’ID specificato (restituisce un oggetto Bio::Seq) get_Seq_by_acc(acc_string): recupera dalla banca dati la sequenza con l’AC specificato (restituisce un oggetto Bio::Seq) get_Seq_by_version(version_string): recupera dalla banca dati la sequenza con la versione specificata (restituisce un oggetto Bio::Seq) get_Seq_by_gi(gi_string): recupera dalla banca dati la sequenza con il GI specificato (restituisce un oggetto Bio::Seq) get_Stream_by_id(id_list): recupera dalla banca dati le sequenze con gli ID specificati (restituisce un oggetto Bio::SeqIO) get_ Stream _by_acc(acc_list): recupera dalla banca dati la sequenza con gli AC specificati (restituisce un oggetto Bio::SeqIO) get_ Stream _by_gi(gi_list): recupera dalla banca dati la sequenza con i GI specificati (restituisce un oggetto Bio::SeqIO) Esempio: use Bio::DB::GenBank. ‘AF303112’.

$weight[0]. -gap => 12. . Allineamento con Smith-Watermann Oggetto: Bio::Tools::pSW Metodi: align_and_show(seq1_obj. use Bio::SimpleAlign.bla'. ext => 2). @weight=@{$weight_ref}. seq2_obj. $seq_stats = Bio::Tools::SeqStats->new($seq_obj). $weight_ref=$seq_stats->get_mol_wt(). $aln=$CW_obj->align(“input. $CW_obj=Bio::Tools::Run::Alignment::Clustalw->new(@params). STDOUT).fasta”). $seq_obj = Bio::Seq->new(-seq => “tttttatgccctaggggg”). print “Peso mol: “. @params=(‘ktuple’ => 2. seq2_obj): per effettuare l’allineamento di due sequenze (restituisce l’oggetto Bio::SimpleAlign) gap(): per recuperare la gap penalty gap(gap_value): per settare la gap penalty ext(): per recuperare la ext penalty ext (ext _value): per settare la ext penalty Esempio: use Bio::Tools::pSW. $seq1=Bio::Seq(-seq => 'agtgtctaa'). ‘matrix’ => ‘BLOSUM’). $seq2=Bio::Seq(-seq => 'agtgtctaa'). “\n”. Allineamento con Clustalw Oggetto: Bio::Tools::Run::Alignment::Clustalw Metodi: align(fasta_file): per allineare un set di sequenze contenute in un file fasta (restituisce un oggetto Bio::SimpleAlign) align(seq_obj_list): per allineare un set di sequenze contenute nella lista (di oggetti Bio::Seq) il cui reference è passato come argomento (restituisce un oggetto Bio::SimpleAlign) Esempio: use Bio::Tools::Run::Alignment::Clustalw.Esempio: use Bio::Tools::Seq use Bio::Tools::SeqStats. $seq2. $factory=Bio::Tools::pSW->new(-matrix => 'blosum62. handle): per effettuare l’allineamento di due sequenze e stamparlo sul canale specificato dall’handle pairwise_alignment(seq1_obj. $factory->align_and_show($seq1.

%id=(). $query=Bio::Seq->new(-seq => 'MNLTELKNTPVSELITLGENMGLENLARMRKQDIIFAILKQHAKSGEDIFGDGVLEILQDGFGFLRSADS SYLAGPDDIYVSPSQIRRFNLRTGDTISGKIRPPKEGERYFALLKVNEVNFDKPENARNKILFENLTPLHA NSRLRMERGNGSTEDLTARVLDLASPIGRGQRGLIVAPPKAGKTMLLQNIAQSIAYNHPDCVLMVLLIDER PEEVTEMQRLVKGEVVASTFDEPASRHVQVAEMVIEKAKRLVEHKKDVIILLDSITRLARAYNTVVPASGK VLTGGVDANALHRPKRFFGAARNVEEGGSLTIIATALIDTGSKMDEVIYEEFKGTGNMELHLSRKIAEKRV FPAIDYNRSGTRKEELLTTQEELQKMWILRKIIHPMGEIDAMEFLINKLAMTKTNDDFFEMMKRS'.Trasformare file di allineamento Oggetto: Bio::AlignIO => crea uno stream di input/output su un determinato file di allineamento in un determinato formato Metodi: next_aln(): per recuperare l’allineamento associato all’oggetto write_aln(align_obj): per scrivere l’allineamento sul file associato all’oggetto Esempio: use Bio::AlignIO. my my my my my $key=1. . $remote_blast = Bio::Tools::Run::RemoteBlast->new(-prog => 'blastp'. %evalue=(). $align_obj2 = Bio::AlignIO->new((-file => ‘>alignOUT. use Bio::Tools::Run::RemoteBlast. use Bio::SeqIO. -format => ‘clustalw’). -1 in caso di errore e 0 in caso di job non ancora terminato. @chiavi=(). -id => 'query'). L’argomento è un Remote Blast ID. Esempio di ricerca di sequenze con BLAST Oggetto: Bio::Tools::Run::RemoteBlast Metodi: submit_blast(seq_obj): per sottomettere un job blast su una sequenza (oggetto Bio::Seq) submit_blast(seq_obj_array_ref): per sottomettere un job blast su una lista di sequenze (riferimento ad un array di oggetti Bio::Seq) submit_blast(fasta_file): per sottomettere un job blast su una sequenza (o un set di sequenze) contenuta in file in formato fasta each_rid(): restituisce la lista dei Remote Blast ID remove_id(rid): rimuove il Remote Blast ID retrieve_blast(rid): restituisce un report blast nel caso di job terminato. $align_obj1 = Bio::AlignIO->new(-file => ‘align.-expect => '1e-10'). %query=(). -format => ‘fasta’).aln’. data => 'swissprot'. $align_obj2->write_aln($aln). $job=$remote_blast->submit_blast($query).aln’. $aln=$align_obj1->next_aln().

foreach $rid(@rids){ print $rid. while(my $result=$rc->next_result()){ $remote_blast->remove_rid($rid). my $evalue = $hsp->evalue(). #Hit my $hit = $result->next_hit(). die "Can't retrieve $rid". } } if(ref($rc)){ print "DONE\n". my $h_name = $hit->name().@rids = $remote_blast->each_rid(). } } } } . $id{$key}=$h_name. print "Error!\n". $evalue{$key}=$evalue. $query{$key}=$q_name. if(ref($hit)) { # Hsp my $hsp = $hit->next_hsp(). } if ($rc==0) { # retrieve_blast returns 0 on 'job not finished' sleep 60. push(@chiavi. $rc = $remote_blast->retrieve_blast($rid).$key++). my $q_name = $result->query_name(). while(!ref($rc)){ if($rc < 0){ # retrieve_blast returns -1 on error $remote_blast->remove_rid($rid). } foreach $rid(@rids){ my $rc=$remote_blast->retrieve_blast($rid). "\n".

Sign up to vote on this title
UsefulNot useful