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

Python Discussion :

Fragmenter une sequence (fichier FASTA) :


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2018
    Messages : 1
    Par défaut Fragmenter une sequence (fichier FASTA) :
    J'ai réaliser un programme dans python afin de fragmenter une longue séquence protéique de plus de 600 acides aminés en petits fragments de 200aa et les sauvegarder dans des sous fichiers ,mais ca fonctionne pas quand je ferais l'exécution...

    Code python : 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
    from Bio import SeqIO
    from Bio.Seq import Seq
     
    def LireFASTA(chemin):
        print("------------------------------ Lecture ------------------------------")
     
     
        seqs = [] 
        for record in SeqIO.parse(chemin, "fasta"):
            seqs.append(str(record.seq))
        return seqs
    def fragmentersequence(seq):
        print("......................Fragmenter..................")
     
        fragment_sequence = []
        j=0
        n=0
        m=200
        if len(seq)>600 :     
            for i in seq:
                    fragment_sequence= i[n:m]
                    n=n+200
                    m=m+200
                    j=j+1
                    print(fragment_sequence)
                    count = SeqIO.write(fragment_sequence, "E:/fragment"+ str(j)+".txt", "fasta")
    def program():
       chemin=input ("entrez chemin : ")
       res= LireFASTA(chemin)
       fragmentersequence(res)
     
    if __name__ == '__main__':
       program()
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    Bonjour,

    Tout d'abord pour afficher du code utilise la balise CODE (le signe #) pour un meilleur formatage.

    Ensuite nous sommes dans un forum perl, le forum python serait plus approprié.

    Enfin, il existe une fonction split pour faire ce découpage.

    Bon courage !

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Ta fonction LireFASTA() renvoie une liste de plusieurs séquences (une liste de chaîne de caractères) alors que ta fonction fragmentersequence() prend en paramètre une seule séquence (une chaîne de caractères).

    Or dans la fonction program() tu passes la liste renvoyée par LireFASTA() à ta fonction fragmentersequence() qui attend une simple chaîne. Ça ne peut pas marcher.

    La logique de fragmentersequence() n'a pas l'air bonne: boucler sur chaque caractère avec for i in seq: est une idée plutôt bizarre. La seule chose sur laquelle il faut te concentrer, c'est la longueur de la séquence et les positions où tu vas faire tes découpages, pas besoin de passer tous les acides aminés en revue. Donc une boucle conditionnelle qui compare la position du début de ta fenêtre (n dans ton code) avec la taille de la séquence serait plus appropriée.

    Certaines choses ne sont pas claires dans ta question:
    • Est-ce que ton fichier fasta de départ contient plusieurs séquences? Et si oui, ton programme doit-il toutes les traiter? (ceci implique de trouver une manière de nommer les fichiers automatiquement d'après la description de la protéine du fichier fasta.)
    • Dans le cas où une séquence dépasse les 600 acides aminés, les fichiers résultants doivent-ils aussi être au format fasta (c'est à dire commençant par une description du type:>sp|Q6GZW6|009L_FRG3G Putative helicase 009L OS=Frog virus 3 (isolate Goorha) OX=654924 GN=FV3-009L PE=4 SV=1) ou doivent-ils juste contenir le morceau de séquence?

Discussions similaires

  1. decoupage des sequences de fichier fasta
    Par rosef dans le forum Général Python
    Réponses: 6
    Dernier message: 24/09/2013, 11h23
  2. Manipulation sequence fichier fasta
    Par Isabella83 dans le forum Bioinformatique
    Réponses: 1
    Dernier message: 15/02/2012, 21h21
  3. [Fichier] Chercher et remplacer une sequence
    Par maximus001ma dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 25/01/2006, 16h08
  4. [bioinfo] reverse complementaire d'une sequence
    Par perlgirl dans le forum Bioinformatique
    Réponses: 6
    Dernier message: 18/06/2004, 11h22
  5. peut-on savoir si un champ a une sequence??
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 14h54

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