IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

récupérer séquences GenBank


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 48
    Points
    48
    Par défaut récupérer séquences GenBank
    Bonjour, j'ai hérité d'un script super util pour récupérer des séquences d'ADN depuis GenBank (une base de données) à partir des numéros d'accessions. Le script fonctionnait encore il y a peu, mais j'ai l'impression qu'une mise à jour de BioPython a modifié l'utilisation de la fonction SeqIO.read, mais je ne vois pas trop la solution.

    Voici le code, il est relativement simple et se lance comme ça dans le terminal :
    ./code.py JN403374-JN406266 mon_mail@gmail.com
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/usr/bin/python
    #-*- coding: utf-8 -*-
     
    import re
    import sys
    from Bio import Entrez
    from Bio import SeqIO
     
     
    ###variables########
    Entrez.email=sys.argv[2]##ton adresse mail
    nums=sys.argv[1]##JN403374-JN406266 pour récupérer (par exemple) les séquences nucléotidiques JN403374, JN403375, .. ,  JN406266
    ################
     
    var=""
    split=nums.split("-")
    head=re.match("^([^\d]+)(\d+)$",split[0]).group(1)
    start=int(re.match("^([^\d]+)(\d+)$",split[0]).group(2))
    stop=int(re.match("^([^\d]+)(\d+)$",split[1]).group(2))
     
    for i in range (start,stop+1):
    	gi="{0}{1}".format(head,i)
    	handle=Entrez.efetch(db='nucleotide',id=gi,rettype="gb")# Accession id works, returns genbank format, looks in the 'nucleotide' database
    	record = SeqIO.read(handle, "genbank")
    	handle.close()	
    	var=var+">{0}\n{1}\n".format(gi,record.seq)
     
     
    ######menu au choix######
    ##output dans terminal##
    #print var
    ##output dans fichier###
    file=open("{0}.fasta".format(nums),'w')
    file.write(var)
    file.close()
    ######################
    Désolé pour la question un peu c** c**
    Myca.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Bonjour mycaweb,
    j'ai testé ton code, il semble bon.
    l'erreur dit que le "handle" n'est pas bon, ce qui veut dire que c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    handle=Entrez.efetch(db='nucleotide',id=gi,rettype="gb")
    qui pose problème. les paramètres sont ils bon et d'actualité ? (nucleotide et gb)

    ces elements : JN403374-JN406266, sont ils bien référencés dans la base de données?

    Cordialement.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    depuis des changements récents de la part de GenBank, il faut modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handle=Entrez.efetch(db='nucleotide',id=gi,rettype="gb")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handle=Entrez.efetch(db='nucleotide',id=gi,rettype="gb",retmode="text")
    Merci à l'auteur du code pour sa réactivité et à utopman de sa réponse,
    Myca

Discussions similaires

  1. Taille et séquence totales du gène dans un fichier GenBank
    Par myosotis29 dans le forum Bioinformatique
    Réponses: 0
    Dernier message: 26/08/2008, 00h26
  2. Réponses: 1
    Dernier message: 27/03/2008, 11h57
  3. Récupérer un numéro de séquence
    Par R1pToR dans le forum Struts 1
    Réponses: 22
    Dernier message: 17/07/2007, 17h14
  4. récupérer les séquences d'une base oracle
    Par gloglo dans le forum Oracle
    Réponses: 5
    Dernier message: 11/10/2006, 14h41
  5. [Séquences] Pour récupérer la dernière valeur
    Par tnodev dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 24/05/2005, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo