Transformer une sortie de Blast xml en format GenBank

Bon­jour, et bien­ve­nu dans mon pre­mier article concer­nant mon script Perl Blast2Gb​.pl. Ce der­nier illustre par­fai­te­ment ce qu'on peut faire faci­le­ment et rapi­de­ment avec un script Perl : du trai­te­ment de texte. Cet outil per­met de faci­li­ter la vie et de trans­for­mer une tâche labo­rieuse en un trai­te­ment rapide et effi­cace.

En effet, qui ne s'est jamais retrou­vé avec une sor­tie de BLAST qu'il vou­drait regar­der dans un pro­gramme de visua­li­sa­tion de séquences (comme Geneious par exemple) mais qui ne prend pas les sor­ties de BLAST ? Ou encore, devant sou­mettre un génome au NCBI, mais qui n'a pas envie de se taper tout le for­ma­tage à la main ? Eh bien, mon pro­gramme est là pour prendre une sor­tie xml d'un blastn, blastx, tblastn ou tblastx et la trans­for­mer en une sor­tie .gb (for­mat Gen­bank) !

Bref, tout ça pour vous expli­quer com­ment il s'utilise 🙂

Vous aurez besoin de 2 fichiers en entrée :

  • Votre sor­tie de blast, en for­mat xml (voir le manuel de blast pour plus d'infos) :
Exemple de fichier xml fourni en input. Cliquez pour agrandir
Exemple de fichier xml four­ni en input. Cli­quez pour agran­dir
  • Votre séquence d'entrée de blast en for­mat fas­ta (la source), qui sert à col­ler la séquence à la fin du fichier gb. Il faut cepen­dant que celle-ci ait une pre­mière ligne bien nom­mée si vous vou­lez que les cases soient cor­rec­te­ment rem­plies, et que le nom soit propre avant que vous ne le blas­tiez : "gi|0000000|gb|AA000000.0| Name of the orga­nism, com­plete genome (ou n'importequoi)"

    Exemple de source fournie au programme. Cliquez pour agrandir
    Exemple de source four­nie au pro­gramme. Cli­quez pour agran­dir

Voi­là à quoi res­semble l'aide :

USAGE :

 perl Blast2Gb.pl -i InFile -s SourceFile [-c circular||linear] [-m 'molecular type'] [-r 0||1] [-a 0||1]
-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:

 perl Blast2Gb.pl -i myinput.xml -s mydb.fasta -c circular -m 'genomic DNA' -r 0 -a 0
 

Quelques options sont dis­po­nibles :

  • -r : elle est utile lorsque l'on contrôle la séquence à tes­ter, et la base de don­nées sur laquelle on blast. En effet, il est pos­sible 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 res­sor­tir les bonnes infos. Il faut aus­si lui don­ner le fichier fas­ta de la base en source.
  • -a : utile quand on blast des exons. On veut­dans ce cas que tous les hsp (voir dans le fichier xml) d'un hit appa­raissent dans le .gb. il faut la pas­ser à 1.
  • -c : il est néces­saire de rem­plir cette option si on a un génome cir­cu­laire. Sinon, il sera consi­dé­ré comme linéaire par défaut.
  • -m : cette option est néces­saire pour bien rem­plir le .gb, j'ai besoin que vous pas­siez au pro­gramme l'information du type molé­cu­laire, par exemple "geno­mic DNA". Il est néces­saire pour le bon fonc­tion­ne­ment du pro­gramme que ce soit en 2 mots.

Voi­là 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 cor­rec­te­ment for­ma­té qui res­semble à ceci :

exemple de sortie de Blast2gb. Cliquez pour agrandir
Exemple de sor­tie de Blast2gb. Cli­quez pour agran­dir

Si vous avez le moindre pro­blème, faites-moi par­ve­nir vos fichiers fas­ta, xml et votre erreur/​problème, je m'efforcerai de le résoudre !

Le lien : Blast2Gb​.pl

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

Les images sont des cap­tures d'écran four­nies par l'auteur et sous licence CC-by-SA 3.0.

La recherche menant à ces résul­tats a reçu un finan­ce­ment du Conseil de Recherche Euro­péen (ERC) sous le 7ème pro­gramme-cadre de la Com­mu­nau­té Euro­péenne FP7/2007–2013 conven­tion de sub­ven­tion no. 206205 : Geno­vir




Commentaires

7 réponses à “Transformer une sortie de Blast xml en format GenBank”

  1. Avatar de Yoann M.
    Yoann M.

    "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 sou­li­gner. Sur un DELL 13' (au hasard) ca sera tota­le­ment dif­fé­rent bien­sur…
    Sacré Aure­lou 🙂
    Mais bon article dans l'ensemble 😉 Au sui­vant !

    1. J'ai mis ça pour que tu sache le temps que ça pren­drait sur ton iMac, vu que tu as le même !

  2. Bon exemple de par­sing en perl mais votre pro­gramme ne mar­che­ra pas si le XML est nor­ma­li­sé (sup­pres­sion des blancs) ou si le NCBI décide de chan­ger son sche­ma. Je ne crois pas voir non plus la ges­tion des enti­tés XML (< &g ; etc…)

    Une pre­miere alter­na­tive est de faire ce par­sing en uti­li­sant un vrai par­seur de XML (DOM,Stax, SAX), une alter­na­tive encore plus élé­gante est d'utiliser XSLT.

    P.

    1. Mer­ci du com­men­taire, je vais enquê­ter sur l'utilisation d'un vrai par­seur !

    2. En fait, étant bio­lo­giste de for­ma­tion, je me suis lan­cé tout seul, alors c'est sûr que des outils plus pré­cis doivent exis­ter, mais je ne les connais pas encore…

      1. Mer­ci pour le script, c'est en effet en par­ta­geant qu'on amé­liore la com­mu­nau­té, Lin­den­baum Pierre est d'ailleurs est maître du par­tage ! Sinon, j'ai vu que vous bos­siez à l'IRBI, nous aurions pu coder ensemble si j'avais été pris sur le poste de maître de conf ouvert l'année der­nière 😛

        1. Avec plai­sir ! Je suis content s'il peut ser­vir à d'autres !
          Oui je suis à l'IRBI, dom­mage qu'on se soit ratés alors !
          C'était sur le poste de MDC avec l'IUT ?

Laisser un commentaire