Bonjour à tous,
Je reviens vers vous car je bloque vraiment sur ces histoires de MultiMap et calcul d'occurrences pour plusieurs données différentes de la MultiMap tout en conservant un certain ordre rigoureux. Je vous explique.
J'ai un fichier texte où j'extrais un certain nombre de données. Sur chaque ligne, je récupère des identifiants de séquence, des noms de gènes avec leurs allèles correspondants et enfin optionnellement des commentaires sur les séquences. Le but de mon travail est de regrouper toutes ces données, à savoir dans un premier temps tous les allèles par gène commun. Par exemple (le fichier est beaucoup plus compliqué mais c'est juste pour simplifier):
Donc il faudrait que dans un 1er temps j'ai quelque chose comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Séquence 1 Gène A Allèle 1, Allèle 2, Allèle 3 Commentaires Séquence 1 Gène A Allèle 1, Allèle 2, Allèle 3 Commentaires Séquence 2 Gène B Allèle 1, Allèle 2, Allèle 3 Aucun Séquence 3 Gène C Allèle 1, Allèle 2, Allèle 3 Commentaires Séquence 4 Gène D Allèle 1, Allèle 2, Allèle 3 Commentaires Séquence 5 Gène A Allèle 1, Allèle 5, Allèle 6 Commentaires Séquence 6 Gène E Allèle 1, Allèle 2, Allèle 3 Aucun Séquence 7 Gène C Allèle 4, Allèle 5, Allèle 6 Commentaires
Cela est facile avec une Multimap où je prends en paramètres un string (le gène en clé) et une arraylist qui contient la liste des allèles regroupés par gènes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1 Gène A ={[Allèle 1, Allèle 2, Allèle 3, Allèle 5, Allèle 6] Gène C ={[Allèle 1, Allèle 2, Allèle 3, Allèle 4, Allèle 5, Allèle 6] etc
Là où cela se complique vraiment, c'est lorsque je dois calculer pour chaque différent allèle:
-le nombre de séquences totales où ils apparaissent
-le nombre de séquences redondantes
-le nombre de séquences non redondantes
-le nombre de commentaires sur les séquences.
En gros, une fois le fichier parcouru, je dois être capable de dire pour un allèle donné, à combien de séquences il est associé au total (cela est facile en faisant juste le calcul d'occurrence de chaque allèle) mais aussi, parmi l'ensemble de ces séquences par allèle, je dois être capable de dire combien il y a de doublons et combien il y a de séquences distinctes et combien de séquences ont des commentaires....
Le tout, en conservant l'ordre établi la 1ère fois, à savoir le regroupement des allèles par gènes. o_O
A la fin, j'aurais quelque chose comme ça:
Comment feriez-vous à ma place? Plusieurs multimaps que vous regroupez à la fin ou une seule multimap constitués de plusieurs arraylists?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Gène A Allèle 1: Séquences Totales : 3 Séquences Redondantes : 1 Séquences Non redondantes : 1 Commentaires : 2
J'avoue que c'est un problème qui me dépasse.
Merci à ceux qui pourront m'aiguiller sur la bonne direction.
Bien amicalement.
Partager