Extraire id 3D d'un fichier Prosite avec Python
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Extraire id 3D d'un fichier Prosite avec Python



  1. #1
    JakiJake

    Extraire id 3D d'un fichier Prosite avec Python


    ------

    Bonjour,

    Mon problème est le suivant :

    J'ai un fichier txt avec tout plein d'informations dedans et juste quelque unes que je veux et qui sont précédées de 3D devant chaque ligne que je veux. (Pour les biologiste, c'est un fichier de la banque prosite dans lequel je veux récupéré seulement les identifiants PDB)

    A partir de ce fichier donc j'ai fait le script suivant qui "normalement" devrait fonctionner. Or j'ai une belle erreur 'index out of range' qui arrive et je comprend pas pourquoi.

    Voici le script:

    f2 = open("PS00028.txt","r")
    prosite_lines = f2.readlines()
    f2.close()

    # Get pdb id from prosite records
    prosite_id = []
    for line in prosite_lines:
    fields = line.split()
    if fields[0] == "3D":
    for ps_id in fields[:1]:
    prosite_id.append(ps_id[:4])

    # Output the pdb id
    for pdbid in prosite_id:
    print pdbid


    Le fichier prosite est en pièce jointe.

    Merci à tous ceux qui pourraient m’aiguiller vers la solution! Je précise que j'utilise python et biopython sous windows.

    Bisous!

    -----
    Fichiers attachés Fichiers attachés

  2. #2
    Calvert

    Re : Extraire id 3D d'un fichier Prosite avec Python

    Salut !

    Quelques idées, en vrac :

    1) Utiliser les balises code pour montrer le code, histoire de garder l'indentation qui est primordiale en python.
    2) Au moment du "crash", l'interpréteur python te donne la ligne à laquelle l'erreur survient.
    3) Qu'est-ce qui peut poser problème à cette ligne ? Quel indice est hors de son intervalle ? Pourquoi ? Celà peut nécessiter d'imprimer quelques variables à l'écran pour s'assurer qu'elles contiennent bien ce que l'on attend (le bon tableau ? le bon type ? etc...)

  3. #3
    JakiJake

    Re : Extraire id 3D d'un fichier Prosite avec Python

    Salut merci de ta réponse!

    Oui j'ai pas du tout fait attention que m'ont copier-coller avait dézinguer l'indentation du script.

    Voilà le vraie script alors:

    f2 = open("PS00028.txt","r")
    prosite_lines = f2.readlines()
    f2.close()

    # Get pdb id from prosite records
    prosite_id = []
    for line in prosite_lines:
    fields = line.split()
    if fields[0] == "3D":
    for ps_id in fields[:1]:
    prosite_id.append(ps_id[:4])

    # Output the pdb id
    for pdbid in prosite_id:
    print pdbid

    Et le message d'erreur est le suivant:

    Traceback (most recent call last):
    File "C:\Python27\pdb_from_prosite. py", line 9, in <module>
    if fields[0] == "3D":
    IndexError: list index out of range


    Merci de vos réponses !

  4. #4
    JakiJake

    Re : Extraire id 3D d'un fichier Prosite avec Python

    Code:
    f2 = open("PS00028.txt","r")
    prosite_lines = f2.readlines()
    f2.close()
    
    # Get pdb id from prosite records
    prosite_id = []
    for line in prosite_lines:
       fields = line.split()
       if fields[0] == "3D":
          for ps_id in fields[:1]:
             prosite_id.append(ps_id[:4])
    
    # Output the pdb id
    for pdbid in prosite_id:
       print pdbid
    Pardon, c'est le vrai ce coup ci ^^

  5. A voir en vidéo sur Futura
  6. #5
    Calvert

    Re : Extraire id 3D d'un fichier Prosite avec Python

    Ben il aime pas
    Code:
    fields[0]
    .

    Du coup, éventuellement imprimer la variable fields avant cette comparaison, et voir à quelle ligne du fichier l'erreur se produit, et pourquoi.

  7. #6
    JakiJake

    Re : Extraire id 3D d'un fichier Prosite avec Python

    Code:
    ['3D', '1A1F;', '1A1G;', '1A1H;', '1A1I;', '1A1J;', '1A1K;', '1A1L;', '1AAY;', '1ARD;', '1ARE;', '1ARF;', '1BBO;']
    ['3D', '1BHI;', '1EJ6;', '1F2I;', '1G2D;', '1G2F;', '1JK1;', '1JK2;', '1JN7;', '1LLM;', '1NCS;', '1NJQ;', '1P47;']
    ['3D', '1P7A;', '1PAA;', '1SP1;', '1SP2;', '1SRK;', '1TF3;', '1TF6;', '1U85;', '1U86;', '1UBD;', '1UN6;', '1VA1;']
    ['3D', '1VA2;', '1VA3;', '1WIR;', '1WJP;', '1X3C;', '1X5W;', '1X6E;', '1X6F;', '1X6H;', '1XF7;', '1YUI;', '1YUJ;']
    ['3D', '1ZAA;', '1ZFD;', '1ZNF;', '1ZNM;', '1ZR9;', '2ADR;', '2COT;', '2CSE;', '2CSH;', '2CT1;', '2CTD;', '2D9H;']
    ['3D', '2DLK;', '2DLQ;', '2DMD;', '2DMI;', '2DRP;', '2EBT;', '2EE8;', '2EL4;', '2EL5;', '2EL6;', '2ELO;', '2ELR;']
    ['3D', '2ELS;', '2ELU;', '2ELV;', '2ELW;', '2ELX;', '2ELY;', '2ELZ;', '2EM0;', '2EM1;', '2EM2;', '2EM3;', '2EM4;']
    ['3D', '2EM5;', '2EM6;', '2EM7;', '2EM8;', '2EM9;', '2EMA;', '2EMB;', '2EMC;', '2EME;', '2EMF;', '2EMG;', '2EMH;']
    ['3D', '2EMI;', '2EMJ;', '2EMK;', '2EML;', '2EMM;', '2EMP;', '2EMV;', '2EMW;', '2EMX;', '2EMY;', '2EMZ;', '2EN0;']
    ['3D', '2EN1;', '2EN2;', '2EN3;', '2EN4;', '2EN6;', '2EN7;', '2EN8;', '2EN9;', '2ENA;', '2ENC;', '2ENE;', '2ENF;']
    ['3D', '2ENH;', '2ENT;', '2EOE;', '2EOF;', '2EOG;', '2EOH;', '2EOI;', '2EOJ;', '2EOK;', '2EOL;', '2EOM;', '2EON;']
    ['3D', '2EOO;', '2EOP;', '2EOQ;', '2EOR;', '2EOS;', '2EOU;', '2EOV;', '2EOW;', '2EOX;', '2EOY;', '2EOZ;', '2EP0;']
    ['3D', '2EP1;', '2EP2;', '2EP3;', '2EPA;', '2EPP;', '2EPQ;', '2EPR;', '2EPS;', '2EPT;', '2EPU;', '2EPV;', '2EPW;']
    ['3D', '2EPX;', '2EPY;', '2EPZ;', '2EQ0;', '2EQ1;', '2EQ2;', '2EQ3;', '2EQ4;', '2EQW;', '2GLI;', '2GQJ;', '2HGH;']
    ['3D', '2I13;', '2J7J;', '2JP9;', '2JPA;', '2KMK;', '2KVF;', '2KVG;', '2L1O;', '2LCE;', '2LT7;', '2LV2;', '2LVR;']
    ['3D', '2LVT;', '2LVU;', '2M0D;', '2M0E;', '2M0F;', '2PRT;', '2RPC;', '2RSH;', '2RSI;', '2RSJ;', '2WBS;', '2WBT;']
    ['3D', '2WBU;', '2YRH;', '2YRJ;', '2YRK;', '2YRM;', '2YSO;', '2YSP;', '2YSV;', '2YT9;', '2YTA;', '2YTB;', '2YTD;']
    ['3D', '2YTE;', '2YTF;', '2YTG;', '2YTH;', '2YTI;', '2YTJ;', '2YTK;', '2YTM;', '2YTN;', '2YTO;', '2YTP;', '2YTQ;']
    ['3D', '2YTR;', '2YTS;', '2YTT;', '2YU5;', '2YU8;', '3AX1;', '3IUF;', '3MJH;', '3UK3;', '3ZNF;', '4F2J;', '4F6M;']
    ['3D', '4F6N;', '4GZN;', '4IJD;', '4IS1;', '4ZNF;', '7ZNF;']
    
    Traceback (most recent call last):
      File "C:\Python27\pdb_from_prosite.py", line 9, in <module>
        if fields[0] == "3D":
    IndexError: list index out of range
    En printant la variable fields ça me met ça. Tout les ID 3D sont présent mais ça met quand même l'erreur, je capte pas.

Discussions similaires

  1. Extraire une page d'un fichier PDF
    Par michel5002 dans le forum Logiciel - Software - Open Source
    Réponses: 39
    Dernier message: 03/02/2014, 11h07
  2. extraire les input/output d'un fichier OWL-S
    Par rayene89 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 29/10/2013, 22h45
  3. Python correction fichier
    Par berguem40 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 07/08/2012, 00h15
  4. lecture fichier Python
    Par berguem40 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 09/09/2011, 11h25
  5. Extraire un fichier audio
    Par invite899f8a1e dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 26/12/2005, 08h50