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
WCOR413­like 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 07­NOV­1999
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

Documents pareils