Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Prérequis : Savoir 'un peu' se servir d'un shell et avoir installé Python et son module Bio.

But : Redécouper des multi-​genbank ou des multi-​FASTA en un fichier par entrée.

Difficulté : 2/​5 (Facile)

Principe : Le NCBI propose un outil très pratique pour récupérer facilement des jeux de données diversifiés : BatchEntrez, vous trouverez plus d'information ici. On télécharge ainsi un fichier texte unique réunissant toutes les données. Si les données sont au format FASTA, on obtient un multi-​FASTA ; ce format est bien reconnu par les logiciels, par contre, pour des fichiers au format Genbank on obtient un multi-​Genbank moins aisé à manipuler. On souhaiterait donc redécouper ce fichier de façon à obtenir un fichier unique par entrée. Il est possible de faire ce découpage à la main  mais ça reste assez contraignant dès qu'on a plus de deux entrées, mais fort heureusement, Python et sa bibliothèque Bio sont là pour nous aider !

Bibliothèque BioPython : BioPython est un ensemble d'outils développés en Python et dédiés à la manipulation de données de biologie moléculaire. Vous trouverez une liste exhaustive des modules sur le site http://​www​.biopython​.org et un tutoriel très abordable à l'adresse http://​biopython​.org/​D​I​S​T​/​d​o​c​s​/​t​u​t​o​r​i​a​l​/​T​u​t​o​r​i​a​l​.​h​tml. Pour vous donner un petit aperçu, il contient divers 'parseurs' de fichiers aux formats les plus utilisés en bioinformatique, des outils de manipulation de séquences nucléotidiques (reverse-​complémentation, randomisation, etc.), plusieurs outils d'alignement (MUSCLE) et la possibilité de lancer des BLAST et d'en 'parser' les résultats, des outils de modélisation protéique, de phylogénie, et j'en passe. En plus BioPython est constamment amélioré par une grande communauté de contributeurs.
S'il n'est pas déjà mis en place sur votre machine Unix, BioPython s'installe assez facilement à l'aide des commandes 'pip install biopython' ou 'easy_​install biopython'.

Démonstration :

Dans un shell Unix, on commence naturellement par se placer dans le dossier qui contient notre fichier, puis on lance une ligne de commande python, en entrant (suspens) :

python

Ensuite, on importe le module BioPython dédié à la manipulation de séquences et d’annotations et on ouvre le fichier (ici un multi-​genbank .ggbk) dans la variable 'a' :

from Bio import SeqIO 
    a = open('mon_fichier.ggbk', 'r')

Enfin, on écrit la sortie

for record in SeqIO.parse(a, 'genbank'):
    ... 
    SeqIO.write([record], open(record.id[:-2]+'.gbk', 'w'), 'genbank')
    ...

On obtient dans le dossier un fichier par entrée, portant le nom de l'identifiant genbank de la séquence, ou de l'identifiant fasta pour un multi-​fasta (le cas échéant, simplement remplacer 'genbank' par 'fasta').

TIP pour les débutants : pour quitter l’interpréteur python, il suffit de faire taper exit() ou son raccourci clavier Ctrl-​D pour les gens sympas ou pomme-​D pour les autres gens sympas

Et voilà, c'était facile.




Commentaires

2 réponses à “Astuce programmation BioPython : Parser les multi-​genbank et les multi-​FASTA produits par Batch Entrez”

  1. Avatar de Guillaume B.
    Guillaume B.

    Merci pour l'astuce.

    Cette technique n'est pas universelle : Ce script doit être édité pour d'autres sources.
    Personnellement, j'utilise un outil d'EMBOSS http://​emboss​.sourceforge​.net/ pour découper ces fichiers : seqretsplit

    Pour les multi-​genbank :
    seqretsplit mon_fichier.ggbk -osformat2 genbank -osextension2 gb -auto

    Pour les multi-​fasta (en utilisant les valeurs par défaut):
    seqretsplit mon_fichier.fasta -auto

    Ce programme gère de nombreux types de fichier, cependant il ne permet pas de conserver la casse de l'identifiant pour le nom du fichier créé.

    1. Avatar de guy roger kaputua
      guy roger kaputua

      merci pour l'information car j'en arai toujours besoin pour ma formation continue sur ce domaine

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.