Le shell, ainsi que la myriade d’outils en ligne de commande qu’il nous offre est un grand ami lorsque vient le temps de manipuler des fichiers de données. Et soyons francs, manipuler des fichiers, c’est une bonne partie du travail d’un bioinformaticien. Cependant, puisque nous avons rarement le temps de survoler l’ensemble des arguments offerts par les différents programmes d’Unix, je me suis dit que je vous présenterais mes préférés de l’utilitaire grep.

Je prends pour acquis que tout le monde connais grep et sa raison d’être alors allons directement aux arguments 🙂

-i, –ignore-case

En voici un assez facile à comprendre et il appert utile lorsque vous ne connaissez pas la structure de casse utilisée au sein du fichier que vous voulez fouiller.
Exemple d’utilisation:

# Recherche d'entrées au sein de fichiers d'annotation de souris et d'humain 
# à l'aide de Gene Symbols (ie: HOXB4 vs Hoxb4). 

> grep -i 'hoxb4' annotations_humaines_ou_murines.txt

-w, –word-regexp

Sélection de lignes pour lesquelles notre patron de recherche représente un mot complet.
Celui-ci peut vraiment s’avérer pratique. Par exemple: utiliser grep pour chercher la chaine ‘chr1’ dans un fichier gtf en oubliant de spécifier l’argument -w vous laissera d’humeur massacrante lorsque vous réaliserez que vous avez aussi sélectionné les lignes associées aux chr10, 11, 12, 13, etc.. Mais maintenant, vous êtes plus futés !
Exemple d’utilisation:

# Extraire les entrées associées au chromosome 1 d'un fichier gtf. 

> grep -w 'chr1' genes.gtf

-f FILE, –file=FILE

Vous voulez fouiller pour la présence de plusieurs patrons d’un seul coup ?
Déposez les tous dans un fichier texte, à raison d’un patron par ligne, et recherchez-les tous à l’aide d’une seule commande !
Exemple d’utilisation:

#  Extraire les MAFs pour un ensemble de quelques centaines de SNPs à l'aide de leurs rsIDs.

> grep -w -F fichier_de_patrons.txt ESP.vcf

# Redirigez la sortie vers un petit script awk, 
# et boum ! La mission est un succès. :)

-v, –invert-match

Celui-ci force grep à retourner les lignes qui ne contiennent PAS votre patron de recherche.
Exemple d’utilisation:

# Générer une version "femelle" d'un gtf. (pourquoi pas..)

> grep -v 'chrY' unisex.gtf

# affaire réglée !

Et pour terminer:

-B NUM, –before-context NUM
-A NUM, –after-context NUM

Ces arguments demandent à grep d’imprimer les N (NUM) lignes AVANT (Before) ou Après le hit du patron de recherche.
Exemple d’utilisation:

# Extraire les reads d'un fichier fastq qui contiennent une chaine de nucléotides donnée. 

> grep -B 1 -A 2 -i 'ccggaacgcagcgaagtggaacgcgcgaactgcgaa' reads.fastq

# (Bon d'accord, faudra répéter pour la séquence reverse-complémentée...)

Bien sur, sentez-vous bien à l’aise de mélanger l’usage de ces arguments pour obtenir l’effet désiré…
Et n’oubliez pas que vous pouvez rediriger la sortie d’un grep… Vers grep !

Voici voilà.. Mes arguments grep préférés.
Et si j’ai omis vos arguments préférés, laissez-le moi savoir dans les commentaires !