Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 17/01/2017, à 18:38

valnovice

Re : [Resolu] gestion format fasta

pingouinux : oui ! c'est cela ! bien reçu pour la remarque

Hors ligne

#52 Le 17/01/2017, à 18:55

pingouinux

Re : [Resolu] gestion format fasta

Si j'ai bien compris, ces 2 lignes (tirées de ton exemple en #49) sont relatives au même identifiant :

>lcl|NC_031377.1_prot_YP_009306839.1_1 [gene=COX1] [protein=cytochrome c oxidase subunit I] [protein_id=YP_009306839.1] [location=1..1548]
>lcl|NC_031377.1_prot_YP_009306840.1_2 [gene=COX2] [protein=cytochrome c oxidase subunit II] [protein_id=YP_009306840.1] [location=1554..2331]

Quel est le nom de cet identifiant ? Autrement dit, quelle chaîne de caractères faut-il prendre pour l'identifiant ?

Hors ligne

#53 Le 17/01/2017, à 19:01

valnovice

Re : [Resolu] gestion format fasta

ces 2 lignes correspondent au même identifiant qui est NC_031377.1 mais de 2 gènes différents: le premier  [gene=COX1] et le 2ème [gene=COX2]
Son nom est NC_031377.1 et c'est tout ce dont on a besoin pour le premier chevron > mais c'est pas grave de garder >lcl|NC_031377.1.

Hors ligne

#54 Le 17/01/2017, à 20:27

pingouinux

Re : [Resolu] gestion format fasta

Alors je te propose ceci, en python, que j'ai testé sur ton exemple en #49. Il faudrait avoir un petit exemple avec plusieurs identifiants.
Voici script.py

#!/usr/bin/python
import sys, re
k=0
k+=1;fic=sys.argv[k]
k+=1;out=sys.argv[k]

rec_ident=re.compile('^>lcl\|(.+)_prot[^[]+\[gene=(\w+)]')

def sortie():
   for i,gene in enumerate(sorted(blocs)):
      for j in range(1 if i else 0,len(blocs[gene])):
         g.write("%s"%(blocs[gene][j]))
blocs={}
ident_av=''
with open(fic,'r') as f, open(out,'w') as g:
   for lig in f:
      k=rec_ident.match(lig)
      if k:
         ident=k.group(1)
         gene=k.group(2).upper()
         if ident!=ident_av and ident_av!='': sortie(); blocs={}; ident_av=ident
         ident_av=ident
         blocs[gene]=[]
      blocs[gene].append(lig)
   sortie()

À lancer ainsi :

./script.py fichier_de_départ fichier_de_sortie

Édité : Correction du script pour traiter correctement plusieurs identifiants (en principe)

Dernière modification par pingouinux (Le 18/01/2017, à 15:27)

Hors ligne

#55 Le 17/01/2017, à 20:49

kholo

Re : [Resolu] gestion format fasta

pour faire avancer le schmilblic :
CO1=COI ?
CO2=COII ?
CO3=COIII ?
et
COX1=COXI ?
COX2=COXII ?
COX3=COXIII ?
???

Hors ligne

#56 Le 17/01/2017, à 21:19

valnovice

Re : [Resolu] gestion format fasta

pingouinux : merci beaucoup! je te tiens au courant
kholo : décidément ce n'est pas un très bon exemple, les noms des gènes devraient identiques (vraiment désolée! ) ici CO1=COXI=COX1 ; CO2 = COXII=COX2

Hors ligne

#57 Le 17/01/2017, à 21:25

valnovice

Re : [Resolu] gestion format fasta

pingouinux : en demi seconde !!!!! aaaaah!
il faut juste que je revérifie si tous le gènes sont en ordre, je vais prendre au hasard !!! déjà  merciiiiiiii

Hors ligne

#58 Le 17/01/2017, à 21:35

valnovice

Re : [Resolu] gestion format fasta

pingouinux : ça correspond !!  avec séparation des 13 gènes à chaque fin de séquence ! c'est exactement ce que je cherchais ! oooh merci merci merci !!!!
et GRAND merci à tous

Dernière modification par valnovice (Le 17/01/2017, à 21:41)

Hors ligne