Astuce :
Fusionner des fichiers entre eux : la commande join

Langage : shell
Commande présentée : join
Niveau : débutant

Présentation de la commande join

La commande join est disponible nativement sur les systèmes d'exploitation GNU/Linux. Il s'agit d'une commande POSIX et elle est donc présente sur tous les systèmes d'exploitation UNIX et UNIX-Like. La plupart des gens utilisent cette commande pour récupérer les lignes communes entre deux fichiers mais elle ne se limite pas à ce seul cas.
Join vous permet de fusionner des champs (colonnes) précis de deux fichiers textes et d'en récupérer la liste des données communes ou encore de vous afficher un résultat proche de ce que vous pourriez faire en SQL avec une requête JOIN.
Dans ce billet je vais vous montrer différentes façons dont on pourrait se servir de cette commande pour récupérer de l'information biologique à partir de données textuelles.

Exemple de résultat de la commande join | Auteur : Norore. Image libre de droit.

Exemple de résultat de la commande join | Auteur : Norore. Image libre de droit.

Préparation des fichiers

Nous nous proposons de trouver les identifiants UniProt des gènes d'Escherichia coli identifiés par le NCBI pour le cycle de Krebs. Pour cela il faut récupérer des données dans différentes banques de données.
Récupération des données sur les gènes d'Escherichia coli :

Récupération des données UniProt d'Escherichia coli :

Liste des gènes du cycle de Krebs : (fichier : genes_cycle_krebs_ecoli.txt, source KEGG)
Ces fichiers présentent des données sous forme de colonnes.

Colonnes du fichier du NCBI :

  1. Numéro de taxon
  2. Identifiant du gène (GeneID)
  3. Symbole du gène
  4. Localisation du gène
  5. Synonymes
  6. Références croisées
  7. Chromosome
  8. Localisation sur la carte chromosomique
  9. Description
  10. Type de gène
  11. Symbole provenant de l'autorité de nomenclature
  12. Nom complet fourni par l'autorité de nomenclature
  13. Statut de la nomenclature
  14. Autres désignations
  15. Date de modification

Colonnes du fichier d'UniProt :

  1. Numéro d'accession UniProt
  2. Base de données d'origine
  3. Identifiant de la base de données d'origine

Dans un premier temps, nous allons extraire les informations sur les gènes à l'aide de la commande grep, comme décrite dans ce billet du blog :

Maintenant que les fichiers sont préparés, nous allons pouvoir faire deux exercices :

  • une fusion simple des fichiers ;
  • une fusion des fichiers avec sélection des colonnes d'intérêt.

Fusion simple

Avant de fusionner les fichiers, vous devez vous assurer qu'ils sont triés de la même façon sur les colonnes à fusionner. Par défaut la commande join fusionne sur la première colonne mais il est possible de préciser les colonnes pour chaque fichier.
Voici un exemple simple pour illustrer dans un premier temps la commande join :

La commande join va afficher sur chaque ligne le #ID, le Prénom et la Console pour chaque individu (les tabulations sont remplacées par des espaces, c'est le comportement par défaut de la commande) :

Dans nos exemples biologiques, nous travaillerons sur les identifiants GeneID des deux fichiers, soit la colonne 3 pour le fichier d'UniProt (option -1 3) et la colonne 2 pour le fichier du NCBI (option -2 2). De plus, nous avons besoin de trouver les données qui correspondent au NCBI dans le fichier d'UniProt. Dans un premier temps nous devons trier les colonnes de la même façon pour chacun des fichiers :

La fusion simple se fait ainsi :