Sei sulla pagina 1di 6

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 allinizio 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 lidentificatore display_id(id_string): per settare lidentificatore primary_id(): per recuperare lidentificatore primario primary_id(primaryID_string): per settare lidentificatore primario desc(): per recuperare la descrizione desc(desc_string): per settare la descrizione accession_number(): per recuperare laccession number accession_number(acc_string): per settare laccession number length(): per recuperare la lunghezza della sequenza alphabet(): per recuperare lalfabeto della sequenza (dna, rna, protein) alphabet(alpha_string): per settare lalfabeto 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

keywords(): per recuperare la lista delle parole chiave keywords(kw_list): per settare la lista delle parole chiave division(): per recuperare la division (es. PRI) molecule(): per recuperare il tipo di molecola (DNA, RNA, etc.) get_dates(): per recuperare le date

Traduzione di una sequenza


Il metodo translate delloggetto Bio::Seq permette di: (1) tradurre completamente la sequenza a partire dal codone iniziale (frame 0): $prot_obj=$seq_obj->translate(); Lo stop codon di default indicato con *. Eventuali aminoacidi sconosciuti sono indicati di default con X.

(2) specificare i parametri della traduzione $prot_obj=$seq_obj ->translate(arg_list) Gli argomenti di arg_list sono nellordine: - terminator: il carattere che indica lo stop codon (di default *) - unknown: il carattere che indica eventuali aminoacidi sconosciuti (di default X) - frame: il frame da cui far partire la traduzione (0 di default, 1, 2) - un flag (0 o 1) per effettuare controlli sullesistenza dello start atg allinizio e sullesistenza dello stop alla fine - un flag (0 o1) per stampare warnings se i controlli effettuati danno esito negativo - 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(-, *): ->translate(-, *, 1): ->translate(-, *, 1, 1, 1): ->translate(undef, undef, 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. Metodi: next_seq(): recupera la sequenza dallo stream associato alloggetto. Per recuperare tutte le sequenze delloggetto 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; $io_obj1=Bio::SeqIO->new(-file => J01673.gb, -format => genbank); $seq_obj=$io_obj1->next_seq();

$io_obj2=Bio::SeqIO->new(-file => >J01673.fasta, -format => fasta); $io_obj2->write_seq($seq_obj);

Recupero di una sequenza da una banca dati


Oggetti: Bio::DB::GenBank Bio::DB::SwissProt Bio::DB::EMBL Etc. Metodi: get_Seq_by_id(id_string): recupera dalla banca dati la sequenza con lID specificato (restituisce un oggetto Bio::Seq) get_Seq_by_acc(acc_string): recupera dalla banca dati la sequenza con lAC 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; $db_obj=Bio::DB::GenBank->new(); $seq1_obj=$db_obj->get_Seq_by_id(MUSIGHBA1); $seq2_obj=$db_obj->get_Seq_by_acc(AF303112); $seq3_obj=$db_obj-> get_Seq_by_version ('J00522.1); $seq4_obj=$db_obj->get_Seq_by_gi(405830); $stream_obj=$db_obj->get_Stream_by_id(J00522, AF303112, 2981014); $seq_obj5=$stream_obj->next_seq();

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 lupper 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 dellalfabeto 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; codoni con basi ambigue sono contati insieme)

Esempio: use Bio::Tools::Seq use Bio::Tools::SeqStats; $seq_obj = Bio::Seq->new(-seq => tttttatgccctaggggg); $seq_stats = Bio::Tools::SeqStats->new($seq_obj); $weight_ref=$seq_stats->get_mol_wt(); @weight=@{$weight_ref}; print Peso mol: , $weight[0], \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; use Bio::SimpleAlign; @params=(ktuple => 2, matrix => BLOSUM); $CW_obj=Bio::Tools::Run::Alignment::Clustalw->new(@params); $aln=$CW_obj->align(input.fasta);

Allineamento con Smith-Watermann


Oggetto: Bio::Tools::pSW Metodi: align_and_show(seq1_obj, seq2_obj, handle): per effettuare lallineamento di due sequenze e stamparlo sul canale specificato dallhandle pairwise_alignment(seq1_obj, seq2_obj): per effettuare lallineamento di due sequenze (restituisce loggetto 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; $factory=Bio::Tools::pSW->new(-matrix => 'blosum62.bla', -gap => 12, ext => 2); $seq1=Bio::Seq(-seq => 'agtgtctaa'); $seq2=Bio::Seq(-seq => 'agtgtctaa'); $factory->align_and_show($seq1, $seq2, STDOUT);

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 lallineamento associato alloggetto write_aln(align_obj): per scrivere lallineamento sul file associato alloggetto Esempio: use Bio::AlignIO; $align_obj1 = Bio::AlignIO->new(-file => align.aln, -format => clustalw); $align_obj2 = Bio::AlignIO->new((-file => >alignOUT.aln, -format => fasta); $aln=$align_obj1->next_aln(); $align_obj2->write_aln($aln);

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, -1 in caso di errore e 0 in caso di job non ancora terminato. Largomento un Remote Blast ID. use Bio::SeqIO; use Bio::Tools::Run::RemoteBlast; $remote_blast = Bio::Tools::Run::RemoteBlast->new(-prog => 'blastp', data => 'swissprot',-expect => '1e-10');

$query=Bio::Seq->new(-seq => 'MNLTELKNTPVSELITLGENMGLENLARMRKQDIIFAILKQHAKSGEDIFGDGVLEILQDGFGFLRSADS SYLAGPDDIYVSPSQIRRFNLRTGDTISGKIRPPKEGERYFALLKVNEVNFDKPENARNKILFENLTPLHA NSRLRMERGNGSTEDLTARVLDLASPIGRGQRGLIVAPPKAGKTMLLQNIAQSIAYNHPDCVLMVLLIDER PEEVTEMQRLVKGEVVASTFDEPASRHVQVAEMVIEKAKRLVEHKKDVIILLDSITRLARAYNTVVPASGK VLTGGVDANALHRPKRFFGAARNVEEGGSLTIIATALIDTGSKMDEVIYEEFKGTGNMELHLSRKIAEKRV FPAIDYNRSGTRKEELLTTQEELQKMWILRKIIHPMGEIDAMEFLINKLAMTKTNDDFFEMMKRS', -id => 'query'); $job=$remote_blast->submit_blast($query); my my my my my $key=1; %id=(); %evalue=(); %query=(); @chiavi=();

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