Objectif

Recoder l'ensemble de nos petits programmes (head, cut, count, nb_exons, tx_len) sous la forme de fonctions (voir la dernière partie de partie théorique sur les fonctions).

Récupérer les programmes

Afin de faciliter le travail, je vous propose de télécharger les programmes et données d'entrée (fichier GTF) ici : all_progs_and_data.tar.gz.

Décompressez cette archive à l'aide de la commande:

tar xvfz all_progs_and_data.tar.gz

Eliminer la redondance

Nous avons plusieurs fois eu besoin de récupérer le nom du transcrit. Puisqu'il semble y avoir nécessité de faire cette opération de manière récurrente (et cela se produira peut-être à nouveau), nous allons créer une fonction.

  • Créer un fichier nommé utils.py (dans lequel nous mettrons nos futures fonctions). Placer ce fichier dans le même dossier que les programmes. Implémenter dans ce fichier une fonction get_tx_name qui à partir de la colonne 9 du GTF (une chaîne de caractère) permet de renvoyer le nom du transcrit.
  • Créer un fichier vide nommé init.py. Ce fichier permettra à python de savoir que certains des objets (e.g functions) présents dans les fichiers de ce dossier peuvent être importer.
  • Modifiez les programmes count.py nb_exons.py et tx_len.py pour qu'il fassent appelle à cette fonction. Penser à utiliser la ligne ci-dessous dans vos programmmes utilisant la fonction get_tx_name. Elle permet d'indiquer à python que cette fonction se trouve dans un autre fichier.
In [7]:
from utils import get_tx_name

Implémenter les programmes en utilisant des fonctions

En vous basant sur l'exemple donné dans la partie théorique sur les fonctions (Réutilisation du code), modifiez vos programmes pour qu'ils contiennent une fonction principale qui pourra être appelé (i) si le programme est lancé directement ou (ii) via un import, quand un autre programme en a besoin.

  • Pour le programme head.py la function s'appellera head et les arguments se nommeront:
  • file_name, nb_lines
  • Pour le programme cut.py la function s'appellera cut et les arguments se nommeront:
  • file_name, col_number
  • Pour le programme count.py la function s'appellera count et l'argument se nommera:
  • file_name
  • Pour le programme nb_exons.py la function s'appellera nb_exons et l'argument se nommera:
  • file_name
  • Pour le programme tx_len.py la function s'appellera tx_len et l'argument se nommera:
  • file_name
In [7]: