Sur le chan IRC du blog, un de nos membres se demandait pourquoi les noms de fichiers FASTQ devait finir par _001.fastq sur la plateforme de cloud computing d'Illumina BaseSpace. Mais avant de répondre à cette question pressante, repartons du début.
Les fichiers FASTQ
En cette période de domination du séquençage haut débit de l'ADN, le format de fichier .fastq est extrêmement commun et très manipulé par les bio-informaticiens. Il s'agit d'un format de fichier texte stockant des séquences de l'ADN tel un fichier FASTA, mais rajoutant pour chaque base des informations sur la qualité des bases (le q de FASTQ veut d'ailleurs dire quality). Vous pourrez lire tout un tas d'informations ennuyantes sur les spécifications exactes du format FASTQ sur cette page wikipedia.
Si toutes les technologies de séquençage de l'ADN peuvent fournir un fichier FASTQ ou presque, le billet du jour s'intéresse à un pattern de nommage des fichiers FASTQ qui nous vient d'Illumina.
Une convention de nommage des fichier FASTQ Illumina
Voici donc un bien joli nom de FASTQ Illumina totalement fictif, mais assez populaire :
SampleName_S1_L001_R1_001.fastq.gz
SampleName et S1 sont le nom et l'identifiant de l'échantillon, rien de bien passionnant.
L001 est une subtilité liée au séquençage Illumina : le séquençage se fait sur des lames en verre appelées flowcells qui disposent de plusieurs pistes où a lieu le séquençage. Une même banque de lecture (library) peut être séquencé sur plusieurs pistes (lane) d'une même flowcell, afin d'équilibrer la répartition des banques entre pistes. De même il peut y avoir plusieurs banques séquencées sur une même piste (ce qu'on appelle le mutliplexage). L001 veut dire que ce fichier FASTQ regroupe des lectures situées sur la piste 001 de la flowcell.
R1 veut dire qu'il s'agit des 1ères lectures (par opposition à R2, les secondes lectures). En effet sur Illumina, on peut faire du séquençage single end ou pair end. Dans le single end, on ne séquencera que les X premières paires de bases du fragment d'ADN (X = 50, 100, 150, 250 de nos jours, mais il descendait jusqu'à 24 dans mes années folles de doctorant). Dans le séquençage pair end, on séquence le début du fragment (la lecture une, R1), puis la fin du fragment (la lecture deux, R2, que l'on range dans un autre FASTQ). Il y a même parfois une troisième lecture (R3) dans le cas des technologies 10x Genomics.
Pour savoir à quoi correspond le 001 final, tournons nous vers l'aide de BaseSpace :
001—The last segment is always 001.
Page d'aide de BaseSpace, Illumina
Vous avouerez que ce n'est pas très informatif. Enquêtons !
Le mystère des fichiers FASTQ finissant par 001.
Si pour de nombreux bio-informaticiens, un fichier FASTQ est un fichier de données brut, il faut savoir que les séquenceurs Illumina ne sortent en général pas des fichiers FASTQ, mais plutôt des fichiers BCL (binary base call), format de base calling binaire obtenue depuis les images successives de spots de fluorescences sur la flowcell. On retrouve ici le fameux adage :
Les fichiers bruts de quelqu'un sont les fichiers processés d'un autre (et réciproquement).
Adage populaire en science des données
Ces fichiers BCL sont ensuite convertis en FASTQ grâce à un utilitaire astucieusement nommé bcl-convert. Allons donc voir ce qui concerne le nommage des fichiers FASTQ en sortie dans la doc de ce logiciel :
The file name format is constructed from fields specified in the sample sheet. The format is as follows.
Doc récente de bcl-convert
• _S#_L00#_R#_001.fastq.gz
Diantre, le 001 final est bien là, mais toujours aussi peu justifié. L'enquête piétine.
Avant bcl-convert, Illumina préconisait plutôt un autre utilitaire, astucieusement nommé bcl2fastq. Allons donc lire la doc (pdf) de la dernière version (la v2.20) de cet outil, notamment la partie concernant le format de nommage des FASTQ en sortie :
001 — The last portion of the file name is always 001.
Documentation de bcl2fastq v2.20, Illumina
Voilà qui ne nous avance guère.
Par curiosité, je suis quand même aller lire la documentation (pdf) de l'ancienne version de bcl2fastq, la v1.8.4, datant de 2013 :
Illumina FASTQ files use the following naming scheme :
<sample name> _ <barcode sequence> _L <lane> _R <read number> _ <set number> .fastq.gz
Documentation de bcl2fastq v1.8.4, Illumina
Ah ! Enfin l'enquête progresse. Le 001 final était donc un numéro variable en des temps reculés, qui correspondait à un set number !
Mais qu'est-ce donc qu'un set dans ce contexte-là, me diriez-vous ?
Set Size
The FASTQ files are divided in files with the file size set by the –fastq-cluster-count command line option of configure BclToFastq.pl. The different files are distinguished by the 0‑padded 3‑digit set number.
Documentation de bcl2fastq v1.8.4, Illumina
On pouvait donc diviser les gros BCL en plusieurs petits FASTQ via un paramètre. Les petits FASTQ se distinguaient entre eux par le numéro final !
Mais pourquoi avoir plusieurs petits FASTQ plutôt qu'un gros ?
En des temps reculés où bcl2fastq proposait encore de faire plein de petit FASTQ, il était possible la taille d'un gros fichier FASTQ (même compressé) dépasse la capacité de support tels que les CD-ROM (700 Mo), les DVD (4.2 ou 8.5 Go), ou la taille maximale des fichiers dans des systèmes de fichiers comme le FAT32 (4 Go max). C'était donc pratique de pouvoir découper les gros fichiers en plusieurs petits pour pouvoir les transférer plus aisément d'un support à l'autre.
La conclusion de l’enquête
Maintenant que la taille maximale des fichiers n'est plus trop un souci, l'option de découpage a disparu de bcl2fastq, puis de bcl-convert, mais le 001 final est resté, sans doute pour assurer une plus grande compatibilité entre les différents outils Illumina sans trop s'embêter. Il s'agit donc d'un artefact, trace d'un passé où les limites techniques nous imposait de passer par de tels artifices.
Merci aux Admins du blog, ainsi qu'aux relecteurs de cet article, ZaZo0o, max et azerin, pour leurs précieux conseils !
Laisser un commentaire