Découverte :
Jouez avec vos données : utilisez un ORM

Il y a quelques temps, je vous ai parlé de base de données, un super moyen pour structurer vos données.

Vous êtes maintenant j'en suis sûr, des professionnels du SELECT, des JOIN et autres ALTER. C'est bien, très bien même, mais maintenant je vais vous apprendre à vous en passer. Et oui, la ligne de commande c'est sympa pour des choses simples et/ou rapides, mais dès que vous voulez plus de complexité, il devient difficile de travailler sans un langage de plus haut niveau.

läskig-orm by henrik larsson

läskig-orm by henrik larsson

Le but de cet article est de vous faire comprendre la notion de Mapping objet-relationnel (en anglais object-relational mapping ou ORM) ou comment transposer votre base de données en objets à utiliser dans votre code. Ben voilà, c'est fait, vous savez ce que c'est, juste un petit exemple pour enfoncer le clou :

Dans mon précédent billet, j'avais créé cette table :

 

et bien grâce à un ORM je vais pouvoir utiliser un objet "Genes" avec les attributs: gene_id, gene_start, gene_end et GCcontent directement dans mon code !

Pour ceux qui sont perdus et ne savent pas ce qu'est un objet en programmation, je vous redirige par ici. Pour les autres, je vais vous montrer comment faire pas à pas, en utilisant le langage Python car il me semble plus simple à appréhender et à comprendre pour le profane (et j'adore ce langage).

Installation des prérequis

Il vous faut Python bien sûr. Si vous ne savez pas si vous l'avez installé sur votre machine => par ici.
Une bibliothèque qui va jouer le rôle de l'ORM :

peewee est donc une petite ORM qui vous permettra de faire le pont entre des bases de données et votre code Python. Celle-ci prend en charge des bases de données de type SQLite, PostgresSQL ou encore MySQL. Oui je ne vous l'ai pas dit, mais un des bénéfices immédiats que vous aurez à utiliser une ORM, c'est que votre code sera adapté, quel que soit le type de base de données que vous utiliserez en backend, très très pratique.

Notez qu'il existe d'autres ORM, tel que SQLAlchemy pour ne citer que cette bibliothèque. Elle supporte beaucoup plus de types de bases de données et a un support plus étendu, mais elle est plus "lourde" à installer. Peewee suffira amplement pour des projets qui ne dépasseront pas les centaines d'utilisateurs journaliers.

Préparation de l'ORM

Allez hop, on code maintenant. Vous pouvez récupérer la base de données dont je tire l'exemple si vous ne l'avez pas déjà.

On importe la bibliothèque

On définit son modèle et la base de données à utiliser :

On définit la table "Genes", et comme nous l'avions fait en SQLite, je nomme les champs de ma table et je définie leur type, rappelez-vous :

devient :

C’est fait !!! Pas plus difficile que ça.

Utilisation

Voici quelques exemples de requêtes que vous pourriez faire :

Compter tous les gènes :

Récupérer le GC content max et le moyen :

Combien de gènes ont un GCcontent > 60% et un nombre de paires de bases > à 1500 ?

Et si je n'en veux que 10 ?

Cela vous demandera un peu de pratique suivant l'ORM utilisé, mais au final vous gagnerez en efficacité si vous comptez travailler plus souvent avec des bases de données.
Notez que dans cet exemple, j'ai utilisé la base de donnée mesgenes.db que j'avais déjà créée. Si vous partez de rien, la commande suivante

va créer la base de données et la table pour vous.

Et si au contraire, vous avez déjà une base de données existante et êtes partisan du moindre effort, vous pouvez utiliser pwiz, il générera votre modèle pour vous (déjà installé par peewee). Par exemple, essayez :

J'ai mis tout ça dans un script Python (2.X) à lancer comme ceci :

(il faut que mesgenes.db se trouve dans le même répertoire).

Voilà !!

Un moyen simple et rapide pour utiliser vos données.

Merci à Yoann, nallias, ZaZo0o et Nolwenn pour leur relecture.

  • À propos de
  • Issu de la formation bioinformatique de Bordeaux 2, je suis co-fondateur de ce blog.

    Je travaille actuellement au LCSB au Luxembourg depuis maintenant 1 an et je me prétend un codeur fou.

    A bientôt sur bioinfo-fr !

3 commentaires sur “Jouez avec vos données : utilisez un ORM

  1. Mais c'est rigolo ce truc! 🙂 Faudra que je teste à l'occase.

  2. En plus d'être rigolo c'est juste trop bien, fini les prises de tête avec les requêtes SQL à se faire une entorse des neurones 🙂

  3. Mais c'est super ça! Je suis pas du tout à l'aise avec Python (pour l'instant) donc je vais rester sur les requêtes SQL (pour l'instant) mais ça m'a l'air tout à fait génial comme raccourci.

Laisser un commentaire