PC & Mobile

Recherche ADN – Interfaces de ligne de commande avec argparse

Recherche ADN - Interfaces de ligne de commande avec argparse


Recherche de petits segments d'ADN

En bioinformatique, il est souvent nécessaire d’exécuter nos programmes en ligne de commande. Heureusement, le module argparse de Python - une partie de la bibliothèque standard facilite cela.

Python a une collection de bibliothèques utiles qui facilitent la construction d'interfaces utilisateur. Habituellement, lorsque nous pensons aux interfaces utilisateur, nous pensons à une interface graphique. Cependant, une interface utilisateur est tout ce qui permet à un utilisateur d'interagir avec votre programme, y compris les interfaces de ligne de commande, qui sont au centre de cet article.

Pour introduire argparse, je vais construire un petit programme qui recherche des petits segments d’ADN spécifiques spécifiés comme entrées par l’utilisateur. Ces petits segments d’ADN recherchés par le programme sont appelés sites d’enzymes de restriction, c’est-à-dire de petites chaînes en Python d’une longueur comprise entre 4 et 6 caractères. Ce programme cherchera dans le génome des bactéries pour voir combien de fois elles sont présentes!

Le programme a deux intentions claires:

  1. Informer l'utilisateur, par exemple en fournissant des messages utiles lorsque le programme se bloque.
  2. Être flexible. Le programme doit pouvoir rechercher l’ADN de son choix en modifiant les arguments de la ligne de commande.

Pour commencer, importez le module argparse et créez un objet ArgumentParser:

Ce n'est pas nécessaire, mais je trouve utile de fournir une chaîne descriptive en utilisant le description mot-clé argument. Lorsque l'aide est appelée sur la ligne de commande plus tard dans le programme, un aperçu descriptif du programme python est fourni. Cela peut être utile, s'il y a plusieurs utilisateurs, et que le temps s'écoule entre les exécutions du programme.

Suite à cela, nous indiquons ensuite à l’objet analyseur d’arguments les arguments à attendre en appelant le Méthode add_argument (). Une fois que tous les arguments ont été ajoutés, nous pouvons lui dire d'aller de l'avant et analyser les arguments en ligne de commande en appelant le méthode parse_args ().

Trois arguments ont été ajoutés par le Méthode add_argument (). En outre, divers autres paramètres facultatifs ont été ajoutés, tels que help =, type =, choix =, défaut = ect.

C’est là que le module argparse prend tout son sens.

Les arguments courts et longs sont spécifiés avec un seul trait d'union (-) ou un double trait d'union (-) respectivement. Cela signifie que sur la ligne de commande du terminal, lors de l'exécution du programme, l'argument peut être exprimé de manière abrégée, -i pour le nom du fichier d'entrée ou, à la longueur, - input_filename pour le nom du fichier d'entrée. Un autre avantage des arguments courts et longs est qu'ils peuvent être exprimés dans n'importe quel ordre sur la ligne de commande!

Les arguments courts et longs dans un mélange et un arrangement assorti sont présentés ci-dessous.

Nous pouvons encore améliorer le texte d'aide en appelant add_argument () avec l'argument du mot clé help. Lorsque le programme est maintenant exécuté sans argument en ligne de commande, un texte d'aide utile apparaît pour les trois arguments (surligné en jaune):

Validation Personnalisée

Le paramètre type = de la méthode parser.add_argument accepte le nom d'une fonction Python.

Le paramètre type fait référence à une fonction. Par exemple, le fichier - input_filename est vérifié par la fonction appelée file_check. Cette fonction ci-dessous, vérifie que le fichier existe réellement.

Enfin, les arguments choice et nargs permettent à l'utilisateur de choisir l'un des éléments de la liste de choix. Comme l'utilisateur peut choisir plusieurs arguments, les paramètres nargs sont nécessaires et un astérisque est spécifié.

Enfin, maintenant tous les arguments ont été ajoutés et les fonctions ajoutées pour la validation des entrées, un petit script peut être écrit. J'écris d'abord un petit dictionnaire où les noms des enzymes de restriction sont les clés et les séquences correspondantes reconnues par l'enzyme de restriction sont leurs valeurs.

Pour être complet, j’ai inclus les modules requis pour ce programme au-dessus du dictionnaire restriciton_enzyme_dict.

Les paramètres spécifiés par l'utilisateur sont préfixés par les arguments suivis de leur nom d'entrée.

Le fichier ADN est d'abord ouvert et lu à l'aide de la méthode .read (). Ensuite, le ou les modèles spécifiés par l'utilisateur sont itérés. Le (s) motif (s) représentent une ou plusieurs enzymes de restriction et sont les clés montrées dans le dict ci-dessus, par exemple, EcoRI est la clé dans le dict; restriction_enzyme_dict et sa valeur est "GAATTC", c’est-à-dire la séquence qu’elle reconnaît dans un échantillon d’ADN.

Je trouve sa valeur pour chaque enzyme de restriction en utilisant la méthode .get (). Sa valeur est la séquence qu’il reconnaît dans le génome. L'expression régulière re.findall trouve toutes les occurrences des séquences dans l'ADN et les ajoute à une liste de résultats.

La liste des résultats est convertie en dictionnaire spécial à l'aide de la méthode collection.Counter (), qui compte le nombre de fois qu'une séquence unique est trouvée.

Pour finir, ce nouveau dictionnaire créé par collections.Counter appelé restriction_sites_dict peut être itéré. Si la séquence est supérieure à un nombre spécifié par l'utilisateur, un message est imprimé indiquant à l'utilisateur combien de fois il a été trouvé et sa séquence.

Pour voir le programme en action, exécutons quelques exemples de tests!

Exemple de sortie affiché:

Ici, j'ai recherché les trois enzymes de restriction -p HindIII, EcoRI et KpnI en utilisant l'indicateur p (l'indicateur p correspond au modèle spécifié par l'utilisateur). Lors de la première exécution, je n'ai pas spécifié de compte. Plus tôt, dans add_argument pour count_no, je définissais une valeur par défaut utile à 0.

Lorsque je lance à nouveau le programme, avec un seuil de compte de 500, le programme m'informe que le site HindIII est inférieur au seuil de 500 que j'ai spécifié.

Ce programme fonctionne bien. Les résultats sont renvoyés rapidement et les sites des enzymes de restriction dans l’ensemble du génome de E. coli ont été fouillés! Assez cool (ce fichier Fasta a été obtenu auprès de NCBI), mais sur notre ligne de commande, nous pourrions facilement choisir de rechercher d'autres génomes bactériens, en spécifiant leur nom de fichier respectif.

Pour finir, il serait utile de répondre à une intention antérieure. Plus précisément, le programme a été conçu pour être flexible. Que se passe-t-il si les utilisateurs ajoutent une enzyme de restriction incorrecte appelée par exemple FakeEnzyme?

Permet de lancer le programme pour le savoir.

J'ai mis en évidence le message d'erreur utile qui apparaît si l'utilisateur entre un choix incorrect qui l'invite à choisir dans la liste de sélection fournie.

Ce bref tutoriel a montré comment une interface de ligne de commande peut être ajoutée à un programme. Heureusement, Python fournit des bibliothèques utiles pour la construction d'interfaces, parmi lesquelles argparse.

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer