Biopython
Transcription
Biopython
Biopython ● Projet gratuit et open source ● Ecrit en python (compatible python 2.3 et +) ● Pour la bioinformatique et l'analyse in-silico de données biologiques Biopython ● Fonctionnalités de biopython : – Travail avec les Séquences – Parser de fichiers de banques biologiques – BLAST automatiques (distant NCBI ou local) – Clustalw – Parser de PDB, Fasta, EMBL, ... – etc... Biopython ● Site: ● ● Tutorial: ● ● http://biopython.org/ http://biopython.org/DIST/docs/tutorial/Tutorial.html Téléchargement: ● http://biopython.org/wiki/Download/ Biopython ● Parser des fichiers de données bioinformatiques: ● ● ● ● ● ● ● ● ● ● Blast (local et WWW) Clustalw FASTA GenBank PubMed et Medline Expasy (Enzyme, Prodoc et Prosite) SCOP Rebase UniGene SwissProt Biopython ● Code pour interagir avec des outils en ligne: – – ● NCBI -- Blast, Entrez et PubMed Expasy – Prodoc et Prosite Interfaces pour des programmes courants: – – Standalone Blast du NCBI Clustalw Travail avec les séquences ● ● But: gérer la séquence elle-même plus d'autres informations d'intérêt pour les biologistes Classe Seq: ● 2 attributs importants: ● ● ● data: séquence elle-même alphabet: type de séquence (ADN, ARN, Protéine, etc.) Avantage: on peut traiter par exemple 2 types d'ADN (non ambigu [ATGC], ou ambigu ATGCNRW...) Travail avec les séquences ● Définition d'un alphabet (Bio.Alphabet IUPAC contient des définitions d'alphabets classiques pour les ADN, ARN, Prot...) >>> from Bio.Alphabet import IUPAC ● Définition d'un objet Séquence >>> my_alphabet = IUPAC.unambiguous_dna >>> from Bio.Seq import Seq >>> my_seq = Seq('CATCCCTTCGATCGGG',my_alphabet) >>> print my_seq Seq('CATCCCTTCGATCGGG', IUPACUnambiguousDNA()) Travail avec les séquences ● Comportement analogue aux chaînes de caractères >>> print my_seq[4:12] Seq('CCTTCGAT', IUPACUnambiguousDNA()) >>> print len(my_seq) 16 >>> new_seq = my_seq[0:5] >>> new_seq Seq('CATCC', IUPACUnambiguousDNA()) >>> my_seq + new_seq Seq('CATCCCTTCGATCGGGCATCC', IUPACUnambiguousDNA()) Transcription et Traduction ● Transcription en ARN: >>> from Bio import Transcribe >>> transcriber = Transcribe.unambiguous_transcriber >>> my_rna_seq = transcriber.transcribe(my_seq) >>> print my_rna_seq Seq('CAUCCCUUCGAUCGGG', IUPACUnambiguousRNA()) ● Traduction en Protéine: Dictionnaire >>> from Bio import Translate >>> translator = Translate.unambiguous_dna_by_id[1] #[1] -> tableau de translation standard #[2] -> Vertebrate Mitochondrial DNA #etc... >>> translator.translate(my_seq) Seq('HPFDRGYS*', HasStopCodon(IUPACProtein(), '*')) >>> (traduit aveuglément même avec des codons stop) Clé Rechercher et Parser des fichiers de bases de données biologiques ● ExPASy -- http://www.expasy.org/ ● Entrez (NCBI) -- http://www.ncbi.nlm.nih.gov/Entrez/ ● PubMed (NCBI) -- http://www.ncbi.nlm.nih.gov/PubMed/ ● SCOP -- http://scop.mrc-lmb.cam.ac.uk/scop/ Requête sur `Entrez' ● Importation de la classe NCBI >>> from Bio.WWW import NCBI ● Requête >>> result = NCBI.query('Search','Protein',term = 'alphab AND crystallin', doptcmdl = 'FASTA') ● Récupération de la requête: ● Renvoi d'une liste >>> lines = result.readlines() ● Renvoi d'une chaîne de caractères >>> line = result.read() Requête sur `Entrez' ● Parsing de la requête >>> lines = result.readlines() >>> for i in lines: ... if re.search('^<pre>',i): ... print i ... <pre>>gi|50659088|ref|NP_596869.2| titin isoform N2-A; connectin; CMH9, included; cardiomyopathy, dilated 1G (autosomal dominant) [Homo sapiens] <pre>>gi|20143922|ref|NP_597681.1| titin isoform novex-2; connectin; CMH9, included; cardiomyopathy, dilated 1G (autosomal dominant) [Homo sapiens] etc... Requête sur `Entrez' ● Lancer une requête automatique dans firefox depuis biopython >>> import os >>> filename = os.path.join(os.getcwd(),'results.html') >>> from Bio.WWW import NCBI >>> result = NCBI.query('Search','Protein',term = 'alphab + crystallin', doptcmdl = 'FASTA') >>> output_file = open(filename,'w') >>> output_file.write(result.read()) >>> output_file.close() >>> os.system('firefox file:' + filename) BLAST automatique ● Importation de la classe Fasta >>> from Bio import Fasta ● Lecture de la séquence >>> file_for_blast = open('1BTA.fasta','r') ● Création d'un `itérateur' Fasta (itère sur toutes les données de séquences dans un fichier Fasta) >>> f_iterator = Fasta.Iterator(file_for_blast) ● Parsing du fichier fasta >>> f_record = f_iterator.next() BLAST automatique ● Requête du Blast (puis sauvegarde) >>> from Bio.Blast import NCBIWWW >>> b_results = NCBIWWW.qblast('blastp', 'nr', f_record) >>> save_file = open('qblast.out.xml', 'w') >>> blast_results = b_results.read() >>> save_file.write(blast_results) >>> save_file.close() Parsing de la requête BLAST blast_results = open('qblast.out.xml', 'r') from Bio.Blast import NCBIXML b_parser = NCBIXML.BlastParser() b_record = b_parser.parse(blast_results) E_VALUE_THRESH = 0.04 for alignment in b_record.alignments: for hsp in alignment.hsps: if hsp.expect < E_VALUE_THRESH: print '****Alignment****' print 'sequence:', alignment.title print 'length:', alignment.length print 'e value:', hsp.expect print hsp.query[0:75] + '...' print hsp.match[0:75] + '...' print hsp.sbjct[0:75] + '...' Parsing de la requête BLAST ****Alignment**** sequence: >gb|AF283004.1|AF283004 Arabidopsis thaliana cold acclimation protein WCOR413like protein alpha form mRNA, complete cds length: 783 e value: 0.034 tacttgttgatattggatcgaacaaactggagaaccaacatgctcacgtcacttttagtccttacatattcctc... ||||||||| | ||||||||||| || |||| || || |||||||| |||||| | | |||||||| |||| ... tacttgttggtgttggatcgaaccaattggaagacgaatatgctcacatcacttctcattcttacatcttcttc... Requête PubMed ● Récupération des `ID' des articles >>> from Bio import PubMed >>> search_term = 'orchid' >>> orchid_ids = PubMed.search_for(search_term) >>> orchid_ids ['15387671', '15384404', '15341672', '15336661', '15315895', '15315678', '15295066', '15277548', '15257450', '15255098', '15252987', '15252972', '15216385', '15208857', '15205176', '15191744', '15186816', '15177685', '15162682', '15159216', '15149406', '15118832', '15113741', '15107957', '15101404', '15078449', '15051623', '15029366', '15012763', '15008402', '15002769', '15002668', '15000649', '14989378', '14756418', '14756414', '14749026', '14704101', '14692972', '14691089', '14666418', '14655040', '14651469', '14644430', '14644913', '14640268', '14635872', '14635769', '14628431', '14564006', '14510805', '12969480', '12941870', '12927964', '12885865', '12877919', '12835910', '12789435', '12779121', '12777054', '12752243', '12721849', '12641907', '12622215', '12605296', '12602882', '12600280', '12590262', '12563689', '12560031', etc... Requête PubMed ● Récupération de certains champs de ces articles >>> from Bio import PubMed >>> from Bio import Medline >>> rec_parser = Medline.RecordParser() >>> medline_dict = PubMed.Dictionary(parser = rec_parser) >>> import string >>> for id in orchid_ids[0:5]: cur_record = medline_dict[id] print 'title:', string.rstrip(cur_record.title) print 'authors:', cur_record.authors print 'source:', string.strip(cur_record.source) print Requête PubMed ● Résultat de la requête title: A Biphenanthrene and a Phenanthro[4,3-b]furan from the Orchid Bulbophyllumvaginatum. authors: ['Leong YW', 'Harrison LJ'] source: J Nat Prod 2004 Sep;67(9):1601-3. title: Endogenous hormonal levels and growth of dark-incubated shoots of Catasetum fimbriatum. authors: ['Suzuki RM', 'Kerbauy GB', 'Zaffari GR'] source: J Plant Physiol 2004 Aug;161(8):929-35. title: Systemic endopolyploidy in Spathoglottis plicata (Orchidaceae) development. authors: ['Yang M', 'Loh CS'] source: BMC Cell Biol 2004 Sep 1;5(1):33. etc... Requête sur Genbank ● Importation de la classe GenBank >>> from Bio import GenBank ● Requête >>> gi_list = GenBank.search_for("Opuntia AND rpl16") >>> gi_list ['6273291', '6273290', '6273289', '6273287', '6273286', '6273285', '6273284'] ● Récupération d'un dictionnaire (clés = IDs) >>> ncbi_dict = GenBank.NCBIDictionary('nucleotide','genbank') >>> gb_record = ncbi_dict[gi_list[0]] Requête sur Genbank >>> print gb_record LOCUS AF191665 902 bp DNA linear PLN 07NOV1999 DEFINITION puntia marenae rpl16 gene; chloroplast gene for chloroplast product, partial intron sequence. ACCESSION AF191665 VERSION AF191665.1 GI:6273291 KEYWORDS SOURCE . chloroplast Opuntia marenae ORGANISM Opuntia marenae ... ORIGIN 1 tatacattaa aggaggggga tgcggataaa tggaaaggcg aaagaaagaa aaaaatgaat 61 ctaaatgata taggattcca ctatgtaagg tctttgaatc atatcataaa agacaatgta ... 841 cggttctgta gtagagatgg aattaagaaa aaaccatcaa ctataacccc aaaagaacca 901 ga // BioPython … mais aussi ... BioPerl BioJava BioRuby