J'ai décidé de partager avec vous la petite astuce du moment que j'ai découverte grâce à Jonathan et que j'ai incorporée dans mon travail actuel (merci encore à lui, il a lu toute l’infâme documentation de UCSC).
[edit : Il vient d'ailleurs de me signaler que la documentation pour les trackhubs vient d'être mise à jour et est devenue beaucoup plus digeste. Tant mieux pour les suivants.]Le navigateur génomique (pour ne pas dire genome browser) de UCSC nous autorise donc à générer et visualiser des "trackhubs".
Qu'est ce qu'un trackhub ?
On parle de trackhub quand on regroupe plusieurs fichiers génomiques dans un même dossier qui peut être ensuite partagé sur UCSC ou avec d'autres personnes par exemple. On pourra empiler des tracks (pistes) venant du même organisme et du même assemblage génomique et on pourra partager facilement tous les fichiers issus d'une même analyse juste en quelques clics.
Les tracks issues de ces fichiers seront utiles pour mieux visualiser les données et voir ce qui change entre elles. On a alors la possibilité de soit les aligner l'une sous l'autre, soit les superposer pour distinguer des résultats qui ne nous auraient pas forcément sauté aux yeux avec des tracks les unes sous les autres (surtout si notre écran est petit).
Comment on fait ?
Premièrement, vous devez avoir accès à une partition (en local ou sur un serveur) accessible de l'extérieur pour que UCSC puisse venir fouiner dedans. Pour ma part j'ai complètement automatisé la chose pour l'incorporer dans mon application web (faite avec Turbogears et SQLAlchemy) et c'est mon serveur qui fournit à UCSC les fichiers nécessaires. La finalité est d'obtenir une URL qui pointe sur un fichier se trouvant dans un dossier entièrement accessible lui aussi.
Intéressons-nous donc à ces fichiers qu'il va falloir construire. Attention, à partir de cette ligne le port du casque devient obligatoire car vous allez rentrer dans la logique de UCSC (ou du moins essayer) et ça peut faire mal.
Créez un dossier qui comportera le nom de votre trackhub :
1 |
mkdir Toto_mon_trackhub |
Ce dossier devra contenir deux fichiers à sa racine ainsi qu'un dossier.
Il vous faudra d'abord créer le fichier hub.txt (les noms sont importants et doivent être strictement identiques à ce que je vous dis, sinon UCSC part bouder dans son coin et ça ne vous arrange pas). Ce fichier devra contenir les lignes suivantes :
1 2 3 4 5 |
hub Toto_mon_trackhub shortLabel Toto longLabel Toto_mon_trackhub_qui_va_etre_tres_beau genomesFile genomes.txt email toto.lover@toto.com |
Explication de texte du fichier décrit ci-dessus : la ligne hub correspond au nom de votre dossier, ici "Toto_mon_trackhub"; le shortLabel devra ne contenir qu'un mot si possible en opposition au longLabel qui pourra accueillir un mode plus verbeux (le tout séparé par des underscores comme vous pouvez le voir dans l'exemple). Quant au genomesFile, il devra toujours être suivi de "genomes.txt". C'est le lien à la prochain étape. Je ne pense pas avoir à détailler la ligne sur l'email, qui est obligatoire également.
Venons-en donc au deuxième fichier devant se trouver à la racine de votre dossier : genomes.txt.
Voilà ce que contient genomes.txt dans le cadre de mon exemple :
1 2 |
genome sacCer2 trackDb sacCer2/trackDb.txt |
Gros fichiers non ? Bon si vous ne devez retenir que deux choses ici c'est : mettre la version de votre assemblage génomique ici (tout en faisant attention aux majuscules qui sont chères à UCSC) et créer un dossier du nom de ce même assemblage génomique à la racine de votre dossier tout frais.
À savoir aussi qu'on peut également mettre plusieurs versions d'assemblage, il suffit juste de répéter les deux lignes avec la nouvelle version (ou autre version) et de créer aussi un autre dossier avec le même nom.
Ici on s'en tiendra à un exemple simple.
On s'exécute donc :
1 |
mkdir sacCer2 |
Puis on fonce dedans pour y créer un autre fichier lui aussi déjà référencé dans genomes.txt. Ça sera le dernier je vous le promets, et le plus intéressant aussi.
Il faudra à ce stade créer dans le dossier sacCer2 le fichier trackDb.txt. Encore une fois le nom du fichier est très important.
Voilà ce que contient notre trackDb.txt d'exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
track Toto_mon_trackhub_qui_va_etre_tres_beau_et_dont_je_vais_etre_tres_fier container multiWig shortLabel Toto longLabel Toto_mon_trackhub_qui_va_etre_tres_beau type bigWig visibility full maxHeightPixels 70 :70 :32 configurable on aggregate transparentOverlay showSubtrackColorOnUi on priority 1.0   ;  ;  ;  ;track LePremierBigwig.bw   ;  ;  ;  ;parent Toto_mon_trackhub_qui_va_etre_tres_beau   ;  ;  ;  ;bigDataUrl http ://monsuperdepot.com/LePremierBigwig.bw   ;  ;  ;  ;shortLabel LePremier   ;  ;  ; longLabel LePremierBigwig   ;  ;  ; type bigWig   ;  ;  ;  ;autoScale on   ;  ;  ;  ;color 208,72,253   ;  ;  ;  ;track LeDeuxiemeBigwig.bw   ;  ;  ;  ;parent Toto_mon_trackhub_qui_va_etre_tres_beau   ;  ;  ;  ;bigDataUrl http ://monsuperdepot.com/LeDeuxiemeBigwig.bw   ;  ;  ;  ;shortLabel LeDeuxieme   ;  ;  ; longLabel LeDeuxiemeBigwig   ;  ;  ; type bigWig   ;  ;  ;  ;autoScale on   ;  ;  ;  ;color 239,242,62   ;  ;  ;  ;track LeTroisiemeBigwig.bw   ;  ;  ;  ;parent Toto_mon_trackhub_qui_va_etre_tres_beau   ;  ;  ;  ;bigDataUrl http ://monsuperdepot.com/LeTroisiemeBigwig.bw   ;  ;  ;  ;shortLabel LeTroisieme   ;  ;  ; longLabel LeTroisiemeBigwig   ;  ;  ; type bigWig   ;  ;  ;  ;autoScale on   ;  ;  ;  ;color 212,144,42 |
On va avoir beaucoup à dire sur ce fichier, donc nous allons procéder sous forme de liste, ça sera plus simple :
- Le premier track détermine le nom de votre track parent sur l'affichage de UCSC
- container fait référence au type de vos fichiers que vous voulez regrouper dans le trackhub. Ici pour l'exemple ce sont tous des bigWig (on le renseigne d'ailleurs après avec la clé "type") donc la valeur à attribuer à la clé sera "multiWig". Vous saisissez le principe. Il est bien sûr impératif que tous vos fichiers soient de la même extension dans le même container.
- shortLabel et longLabel font leur retour, ils détermineront les noms de vos tracks
- visibility est à régler selon vos préférences. Moi je la mets toujours d'emblée à full, et c'est de toute manière réglable par la suite à l'écran.
- Pas mieux pour le maxHeightPixels, cette valeur me convient très bien.
- Je laisse le configurable à on, on peut ainsi retoucher à deux-trois réglages après génération du trackhub.
- Pour la clé aggregate, encore une histoire de goûts et de couleurs. Cela déterminera l'affichage de la superposition de vos tracks. Ici je choisis le mode en transparence qui rend assez bien
- Pour les deux dernières clés du container, à savoir showSubtrackColorOnUi et priority, je vous demande de me faire confiance et de laisser ça comme tel. Pour la première il s'agit d'afficher la légende des couleurs utilisées dans la page de configuration de votre trackhub et pour la seconde il s'agit en réalité de la priorité que vous souhaitez donner à votre piste par rapport aux autres. Rien ne vous empêchera de jouer avec par la suite pour voir si ça vous est réellement utile.
On a fini de configurer le container, qui sera appelé à partir de maintenant le "parent" de nos tracks exemples.
Il faudra à partir de maintenant mettre une indentation (une tabulation) avant chacune des clés suivantes pour que notre ami UCSC soit content. Ces clés seront à répéter autant de fois que l'on a de fichiers génomiques à afficher dans le trackhub :
- track, ni plus ni moins que le nom de votre piste. J'ai coutume d'y mettre le nom du fichier.
- parent correspondra au nom de notre container, ici Toto_mon_trackhub_qui_va_etre_tres_beau
- bigDataUrl sera le lien vers votre fichier (accessible depuis l'extérieur, j'insiste). Cela pourra être un lien http (comme notre exemple) ou bien un chemin relatif vers le fichier qui se trouvera quelque part dans votre dossier "sacCer2" (pour notre exemple).
- On retrouve pour la dernière fois nos amis shortLabel et longLabel. Promis on ne les verra plus.
- Le type correspond à l'extension du fichier. Attention à bien l'écrire comme UCSC le souhaite (majuscules-minuscules), sinon il fait celui qui connaît pas et se braque comme un bourricot (j'en suis venu à penser qu'il a eu une enfance difficile…).
- Pour l'autoScale, là encore je vous conseille de le laisser à on.
- Enfin color sera la couleur de votre piste en RGB. Essayez de ne pas prendre des couleurs qui ne vont pas ensemble (du genre marron, noir et violet foncé). C'est peut-être bête à avouer, mais c'est assez difficile de trouver un bon compromis. Moi je me suis résolu à les générer au hasard et à faire confiance au tirage au sort. Si quelqu'un a une meilleure solution je suis bien entendu preneur (pour n tracks bien sûr).
Bon à savoir :
- Vous ne pourrez pas avoir un shortLabel et un longLabel identique. Si c'est le cas, vous facherez UCSC et n'obtiendrez rien de lui.
- Il est important de respecter les sauts de lignes et les tabulations comme dans l'exemple donné, sinon même punition que pour le premier point
- Il est possible de mettre plusieurs containers/parents dans trackDb.txt. L'exemple se voulant résolument facile pour vous familiariser avec la chose.
Une fois arrivés là vous avez fait le plus dur.
Il existe d'autres clés modifiables, vous pourrez les retrouver sur la nouvelle documentation des trackhubs de UCSC.
Pour arriver à la finalité du processus il ne vous restera plus qu'à vous rendre à l'adresse suivante :
http://genome.ucsc.edu/cgi-bin/hgHubConnect
Il vous sera alors demandé de déposer une URL pointant sur le fichier hub.txt de votre trackhub.
Enfin après un temps plus ou moins long d'attente lié au proccessing (et au nombre de confrères utilisant le service), voilà votre merveilleux trackhub qui s'affiche enfin devant vos yeux émerveillés. Bon visionnage et bonne exploration génomique.
Voilà, il ne tient qu'à vous d'automatiser tout ça. C'est assez simple puisque maintenant on vous a tout décortiqué. Il ne vous reste plus qu'à créer les dossiers et fichiers, puis générer l'adresse pointant sur le hub.txt.
Une dernière chose : si quelqu'un comprend le principe de UCSC de faire pointer sur un fichier qui pointe ensuite sur un second, puis sur un troisième qui à son tour va pointer sur de multiples fichiers : merci de m'expliquer. J'ai pas compris pourquoi ils n'ont pas fait tout ce "workflow" à partir d'un seul et même fichier texte… Pourquoi faire simple quand on peut faire compliqué ? La devise de UCSC 🙂
Je remercie Estel, Nolwenn et Julien pour leur relecture sans faille et jsobel pour ses conseils de jedi UCSC.
Laisser un commentaire