Astuce :
Transformer une sortie de Blast xml en format GenBank

Bonjour, et bienvenu dans mon premier article concernant mon script Perl Blast2Gb.pl. Ce dernier illustre parfaitement ce qu'on peut faire facilement et rapidement avec un script Perl : du traitement de texte. Cet outil permet de faciliter la vie et de transformer une tâche laborieuse en un traitement rapide et efficace.

En effet, qui ne s'est jamais retrouvé avec une sortie de BLAST qu'il voudrait regarder dans un programme de visualisation de séquences (comme Geneious par exemple) mais qui ne prend pas les sorties de BLAST ? Ou encore, devant soumettre un génome au NCBI, mais qui n'a pas envie de se taper tout le formatage à la main ? Eh bien, mon programme est là pour prendre une sortie xml d'un blastn, blastx, tblastn ou tblastx et la transformer en une sortie .gb (format Genbank) !

Bref, tout ça pour vous expliquer comment il s'utilise 🙂

Vous aurez besoin de 2 fichiers en entrée :

  • Votre sortie de blast, en format xml (voir le manuel de blast pour plus d'infos) :
Exemple de fichier xml fourni en input. Cliquez pour agrandir

Exemple de fichier xml fourni en input. Cliquez pour agrandir

  • Votre séquence d'entrée de blast en format fasta (la source), qui sert à coller la séquence à la fin du fichier gb. Il faut cependant que celle-ci ait une première ligne bien nommée si vous voulez que les cases soient correctement remplies, et que le nom soit propre avant que vous ne le blastiez : "gi|0000000|gb|AA000000.0| Name of the organism, complete genome (ou n'importequoi)"

    Exemple de source fournie au programme. Cliquez pour agrandir

    Exemple de source fournie au programme. Cliquez pour agrandir

Voilà à quoi ressemble l'aide :

USAGE:

-i:
Your input has to be an xml blast output format (option 5).

-r:
It can be 0 for not reverse or 1 for reverse.
If you want the reverse, the sourcefile is the db used for the blast.

-a:
It can be 0 for not all or 1 for all.
It means that you want to print all the Hsp in a Hit (1), or just the best one (0).
It is useful if you have exons (chose 1).

-s:
If your input has an odd name, please define your blast input fasta file this way :
">gi|0000000|gb|AA000000.0| Name of the organism, complete genome(or anything)"
And it works better if the sequence is on one line.

 

EXAMPLE:

 

Quelques options sont disponibles :

  • -r : elle est utile lorsque l'on contrôle la séquence à tester, et la base de données sur laquelle on blast. En effet, il est possible de faire un blast de la base sur nos séquences, c'est ce que j'appelle un reverse (d'où le -r), et il faut dans ce cas que Blast2Gb.pl fasse ressortir les bonnes infos. Il faut aussi lui donner le fichier fasta de la base en source.
  • -a : utile quand on blast des exons. On veutdans ce cas que tous les hsp (voir dans le fichier xml) d'un hit apparaissent dans le .gb. il faut la passer à 1.
  • -c : il est nécessaire de remplir cette option si on a un génome circulaire. Sinon, il sera considéré comme linéaire par défaut.
  • -m : cette option est nécessaire pour bien remplir le .gb, j'ai besoin que vous passiez au programme l'information du type moléculaire, par exemple "genomic DNA". Il est nécessaire pour le bon fonctionnement du programme que ce soit en 2 mots.

Voilà tout ! Il traite un fichier .xml de 2Mo en moins de 10 secondes sur un iMac 27' Core i7@2,93Ghz, et donne un fichier .gb correctement formaté qui ressemble à ceci :

exemple de sortie de Blast2gb. Cliquez pour agrandir

Exemple de sortie de Blast2gb. Cliquez pour agrandir

Si vous avez le moindre problème, faites-moi parvenir vos fichiers fasta, xml et votre erreur/problème, je m'efforcerai de le résoudre !

Le lien : Blast2Gb.pl

Et si vous voulez mettre en ordre votre .gb, SortGb.pl mais je ne l'ai pas mis à jour depuis quelques temps...

---

Les images sont des captures d'écran fournies par l'auteur et sous licence CC-by-SA 3.0.

La recherche menant à ces résultats a reçu un financement du Conseil de Recherche Européen (ERC) sous le 7ème programme-cadre de la Communauté Européenne FP7/2007-2013 convention de subvention no. 206205 : Genovir

  • À propos de
  • Passionné d'informatique et de biologie, après des études à Orléans, un stage de M2 au CSBC de l'Université de Cambridge (UK), une thèse à l'IRBI de Tours sur l'évolution des virus et un Post-doc à Toronto sur les cancers humains, je suis aujourd'hui de retour à Orléans à l'INRA, où j'essaie de lier phénotype des arbres et expression de leurs gènes. Je suis très intéressé par les approches d'apprentissage machine. Mes autres passions sont le basket-ball, le krav maga, la musique ou encore les jeux vidéos.

Catégorie: Astuce | Tags: , , , , ,

7 commentaires sur “Transformer une sortie de Blast xml en format GenBank

  1. "2Mo en moins de 10 secondes sur un iMac 27′ Core i7@2,93Ghz"

    En effet, le fait que ca soit un iMac de 27' est a souligner. Sur un DELL 13' (au hasard) ca sera totalement différent biensur...
    Sacré Aurelou 🙂
    Mais bon article dans l'ensemble 😉 Au suivant !

    • J'ai mis ça pour que tu sache le temps que ça prendrait sur ton iMac, vu que tu as le même !

  2. Bon exemple de parsing en perl mais votre programme ne marchera pas si le XML est normalisé (suppression des blancs) ou si le NCBI décide de changer son schema. Je ne crois pas voir non plus la gestion des entités XML (< &g; etc...)

    Une premiere alternative est de faire ce parsing en utilisant un vrai parseur de XML (DOM,Stax, SAX), une alternative encore plus élégante est d'utiliser XSLT.

    P.

    • Merci du commentaire, je vais enquêter sur l'utilisation d'un vrai parseur !

    • En fait, étant biologiste de formation, je me suis lancé tout seul, alors c'est sûr que des outils plus précis doivent exister, mais je ne les connais pas encore...

      • Merci pour le script, c'est en effet en partageant qu'on améliore la communauté, Lindenbaum Pierre est d'ailleurs est maître du partage! Sinon, j'ai vu que vous bossiez à l'IRBI, nous aurions pu coder ensemble si j'avais été pris sur le poste de maître de conf ouvert l'année dernière 😛

        • Avec plaisir ! Je suis content s'il peut servir à d'autres !
          Oui je suis à l'IRBI, dommage qu'on se soit ratés alors !
          C'était sur le poste de MDC avec l'IUT ?

Laisser un commentaire