vidjil issueshttps://gitlab.inria.fr/vidjil/vidjil/-/issues2018-06-13T11:51:58+02:00https://gitlab.inria.fr/vidjil/vidjil/-/issues/3272Merge du travail de Cyprien et historique du git2018-06-13T11:51:58+02:00Mathieu GiraudMerge du travail de Cyprien et historique du git(Mis volontairement dans une issue et non pas une MR, car les branches vont changer)
Dans la perspective d'un merge prochain du travail de @boreec, j'ai regardé systématiquement les différences entre `dev` et `feature-a/920-optimize-fin...(Mis volontairement dans une issue et non pas une MR, car les branches vont changer)
Dans la perspective d'un merge prochain du travail de @boreec, j'ai regardé systématiquement les différences entre `dev` et `feature-a/920-optimize-fine-segmenter` sur les "anciens" fichiers (ce qui au passage a levé #3270, #3271).
Je me demande maintenant si on ne devrait pas simplifier l'historique pour le futur.
- Ce qui me gène le plus est a7d99993 qui touche à `align_against_collection`... alors qu'on final il n'y a absolument rien de différent dans `align_against_collection`. Je tiens à rebaser / enlever cela (je peux m'en charger).
- Plus généralement, les premières semaines il y a eu beaucoup de déplacements dans tous les sens, des fonctions essayées puis supprimées (c'est normal @boreec, cela nous arrive aussi quand on fait des choses de cet ampleur), et c'était le début et les commits n'étaient pas toujours très atomiques. Bref je me demande si on pourrait squasher (et faire quelques commits sur les différents fichiers) jusqu'à par exemple fin avril. Je peux également m'en charger si ceal vous convient.merge-filterMathieu GiraudMathieu Giraudhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3271Ne pas relancer filterBioReaderWithACAutomaton() dans vidjil.cpp2018-06-13T16:13:07+02:00Mathieu GiraudNe pas relancer filterBioReaderWithACAutomaton() dans vidjil.cppPour la sortie `clone_file_name` (ping #3269), e01870a (puis fe6f5c6, 9e26c74) ré-utilisent `filterBioReaderWithACAutomaton()` au moment de la *sortie* du clone déjà segmenté.
C'est dommage, on appelle au total `filterBioReaderWithACAut...Pour la sortie `clone_file_name` (ping #3269), e01870a (puis fe6f5c6, 9e26c74) ré-utilisent `filterBioReaderWithACAutomaton()` au moment de la *sortie* du clone déjà segmenté.
C'est dommage, on appelle au total `filterBioReaderWithACAutomaton()`... deux fois.
Pour enlever cela,
- soit stocker `filtered` dans le `FineSegmenter` (le plus simple ?)
- soit stocker directement `filtered.read(box_V->ref_nb)` dans `box_V`
cc @boreecmerge-filterhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3266-z et segment2018-06-11T14:28:51+02:00Mathieu Giraud-z et segment@mikael\-s, https://gitlab.inria.fr/vidjil/vidjil/issues/3260#note_94794 :
> le `-z 100` n'a aucun effet avec `-c segment`.
Est-ce que ce ne serait pas souhaitable que ce soit le cas ?
Ou sinon est-ce plutôt le `-x` qui fait déjà cela ...@mikael\-s, https://gitlab.inria.fr/vidjil/vidjil/issues/3260#note_94794 :
> le `-z 100` n'a aucun effet avec `-c segment`.
Est-ce que ce ne serait pas souhaitable que ce soit le cas ?
Ou sinon est-ce plutôt le `-x` qui fait déjà cela ?
cc @boreechttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3263Des analyses avec des BAM ne fonctionnent pas2020-01-22T15:48:29+01:00Thonier FlorianDes analyses avec des BAM ne fonctionnent pasJe tombe depuis quelques jours sur des bugs lors de lancement d'analyses de fichiers `BAM`.
Au début, comme il y avait des souci avec le missing id, je pensais à un lien. Il apparaît très clairement maintenant que le souci est ailleurs...Je tombe depuis quelques jours sur des bugs lors de lancement d'analyses de fichiers `BAM`.
Au début, comme il y avait des souci avec le missing id, je pensais à un lien. Il apparaît très clairement maintenant que le souci est ailleurs. En regardant le log complet de vidjil, je me rend compte qu'il est incapable de traiter le fichier :
```bash
vidjil-algo: bam.cpp:77: virtual void OnlineBAM::next(): Assertion `(bam_entry->core.flag & (1 | 64 | 128)) == 0' failed.
```
Je ne comprend pas vraiment l'erreur. Comme je n'ai pas d'autres fihciers bam en main, j'en ai téléchargé un depuis le serveur vidjil poru faire des tests. Il se trouve que sur celui-ci vidjil fonctionne parfaitement. J'ai alors pensé à des fichiers corrompus. J'ai alors voulu lancé une analyse via la commande suivante:
```bash
samtools quickcheck -v *.bam > bad_bams.fofn && echo 'all ok' || echo 'some files failed check, see bad_bams.fofn'
```
Le résultat montre que les deux fichiers (celui compatible vidjil et l'autre) sont à priori correctement formatés.
En soit, il ne semble donc pas être corrompus. Je vais quand même demander à l'utilisateur de me fournir un md5sum au cas ou. Le souci est que si l'erreur est en amont, a sa propore génération par le séquenceur, ca ne résoudra pas le souci.
en attendant, si ce n'est pas la source de l'erreur, je ne sais pas quoi faire d'autre.
@mikael\-s : Toi qui a dev la fonction pour les BAM, tu as une idée de la raison ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/3260Filtrage des germlines : temps total, comparaison avec dev2018-07-12T17:29:57+02:00Mathieu GiraudFiltrage des germlines : temps total, comparaison avec devDiscuté avec @boreec : de manière complémentaire à #3227, on peut aussi désormais évaluer le temps total et le gain apporté par l'automate (par exemple à N=1, 5, 10) "en vrai", depuis l'extérieur, par un `time`. Commandes proposées, norm...Discuté avec @boreec : de manière complémentaire à #3227, on peut aussi désormais évaluer le temps total et le gain apporté par l'automate (par exemple à N=1, 5, 10) "en vrai", depuis l'extérieur, par un `time`. Commandes proposées, normalement du moins favorable au plus favorable :
- `make shouldvdj` (une cinquantaine de lancements, 1 à quelques séquences par lancement donc en plus)
- `./vidjil-algo -g germline -r 1 -z 100 demo/LIL-L4.fastq.gz` (1 seul lancement, multi-germlines, pas de IGH)
- `./vidjil-algo -c segment -g germline/homo-sapiens.g:IGH -x 100 demo/Stanford_S22.fasta` (1 seul lancement, que de l'alignement IGH)
(pour les deux dernières commandes , `-z/x 1000` voire `-z/x 10000` la nuit)
On doit être conscient que l'accélaration finale pour l'utilisateur sera cependant inférieure à ce dernier cas (car il y a les "autres étapes", que ce soit à l'intérieur ou à l'extérieur)Algo 2018.08Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3259Se souvenir de la taille des BioReader filtrés et l'afficher tout à la fin en...2018-07-05T20:21:04+02:00Mathieu GiraudSe souvenir de la taille des BioReader filtrés et l'afficher tout à la fin en debug / infoDiscuté avec @boreec: on souhaite, lors de tests type #3227/#3260 et même en utilisation de routine, avoir un contrôle sur l'étape de filtrage, en sachant comment cette étape se comporte.
Pour ne pas avoir de variable globale, la propos...Discuté avec @boreec: on souhaite, lors de tests type #3227/#3260 et même en utilisation de routine, avoir un contrôle sur l'étape de filtrage, en sachant comment cette étape se comporte.
Pour ne pas avoir de variable globale, la proposition est d'ajouter deux entiers dans `Germline`
- `filtered_sequences_nb`, nombre total de séquences retournées dans les BioReader filtrés
- `filtered_sequences_calls`, nombre total d'appels au filtrage de BioReader
Ce qui permettrait d'afficher à la fin quelque chose comme `FineSegmenter: aligned 547/34900 (1.56%) sequences`Algo 2018.08Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3243Export des informations d'un clone2021-04-14T08:41:06+02:00Mikaël SalsonExport des informations d'un cloneLe tableau d'information d'un clone peut être affiché mais ne peut pas être exporté. Or beaucoup d'informations s'y trouvent (y compris provenant d'IMGT le cas échéant) et il serait intéressant de ne pas les perdre (cf. #3241).Le tableau d'information d'un clone peut être affiché mais ne peut pas être exporté. Or beaucoup d'informations s'y trouvent (y compris provenant d'IMGT le cas échéant) et il serait intéressant de ne pas les perdre (cf. #3241).https://gitlab.inria.fr/vidjil/vidjil/-/issues/3238Aho-Corasick : utiliser un set plutôt qu'une liste pour stocker les informati...2018-06-13T15:45:33+02:00Mikaël SalsonAho-Corasick : utiliser un set plutôt qu'une liste pour stocker les informations ?Les informations contenues dans chaque état sont stockées sous forme de liste ce qui permet facilement d'en ajouter de nouveaux. Le problème c'est que lorsqu'on ajoute la même information plusieurs fois, lorsqu'on requête on renvoie la m...Les informations contenues dans chaque état sont stockées sous forme de liste ce qui permet facilement d'en ajouter de nouveaux. Le problème c'est que lorsqu'on ajoute la même information plusieurs fois, lorsqu'on requête on renvoie la multiplicité de l'information.
Il serait plus pertinent d'avoir un set. À voir si cela pose des problèmes ou si cela passe.Mikaël SalsonMikaël Salsonhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3223Évaluer la spécificité du filtrage2018-07-09T10:47:16+02:00Mikaël SalsonÉvaluer la spécificité du filtrageFiltrer c'est bien, mais bien filtrer c'est mieux. On a vu dans https://gitlab.inria.fr/vidjil/vidjil/issues/3190#note_89826 qu'on peut diminuer significativement le temps d'exécution de la fonction. Mais conserve-t-on les gènes qui nous...Filtrer c'est bien, mais bien filtrer c'est mieux. On a vu dans https://gitlab.inria.fr/vidjil/vidjil/issues/3190#note_89826 qu'on peut diminuer significativement le temps d'exécution de la fonction. Mais conserve-t-on les gènes qui nous intéressent ?
On peut déjà vérifier cela grâce aux tests `shouldvdj` selon le niveau de filtrage.Algo 2018.08Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3217Filtrage par automate: prendre les N meilleures séquences2018-06-13T15:45:33+02:00Mathieu GiraudFiltrage par automate: prendre les N meilleures séquences@mikael\-s :
> @boreec garde pour l'instant tous les gènes qui ont au moins 1 k-mer ayant matché. C'est plutôt ce critère (...) pur lequel on va jouer. Juste pour tester tu peux augmenter significativement ce critère (10 par exemple).
...@mikael\-s :
> @boreec garde pour l'instant tous les gènes qui ont au moins 1 k-mer ayant matché. C'est plutôt ce critère (...) pur lequel on va jouer. Juste pour tester tu peux augmenter significativement ce critère (10 par exemple).
Après avoir fait cela, on pourra aussi tester de ne garder que les 5, 10 ou 20 gènes aillant *le plus* de k-mers (donc avec un `sort` après le comptage par automate). Pour IGHV, cela garantira que tout ira bien plus vite... par contre il faudra vérifier la sensibilité.Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3212modifier la méthode insert de automaton pour mettre l'information dans les di...2018-05-15T07:33:15+02:00Cyprien Boréemodifier la méthode insert de automaton pour mettre l'information dans les différentes étapes de l'automateComme la méthode **getMultiResults** de l'automate peut renvoyer un résultat indésirable si la séquence à analyser est plus courte que celles constituant les k-mers, il est souhaitable d'avoir des informations sur chaque état de l'automa...Comme la méthode **getMultiResults** de l'automate peut renvoyer un résultat indésirable si la séquence à analyser est plus courte que celles constituant les k-mers, il est souhaitable d'avoir des informations sur chaque état de l'automate pour ensuite convenir du k-mer le plus ressemblant à la séquence à analyser.
/!\ Respecter la complexité de la boucle de la méthode insert.Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3210Créer un test fonctionnel pour le filtrage de BioReader2018-07-11T18:21:08+02:00Cyprien BoréeCréer un test fonctionnel pour le filtrage de BioReaderPour s'assurer que les BioReader dans germline sont bien filtrés, il faudrait créer un test (ou plusieurs) dans **should-get-tests** dans **algo/tests**.Pour s'assurer que les BioReader dans germline sont bien filtrés, il faudrait créer un test (ou plusieurs) dans **should-get-tests** dans **algo/tests**.Algo 2018.08Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3209Créer un cas de test pour getMultiResults où la séquence à tester est plus co...2018-06-12T12:36:43+02:00Cyprien BoréeCréer un cas de test pour getMultiResults où la séquence à tester est plus courte que celles représentées par les K-mersLors du filtrage du **BioReader** par la fonction **filterBioReaderWithACAutomaton** dans **segment.cpp**, la méthode **getMultiResults** de l'automate ne retourne pas le bon nombre de gènes. Pour cela il faudrait tester créer un cas spé...Lors du filtrage du **BioReader** par la fonction **filterBioReaderWithACAutomaton** dans **segment.cpp**, la méthode **getMultiResults** de l'automate ne retourne pas le bon nombre de gènes. Pour cela il faudrait tester créer un cas spécifique dans les tests où la séquence qu'on applique à l'automate est plus courte que celles représentées par les K-mers utilisés lors de la construction de l'automate.
Après discussion avec @magiraud il semble nécessaire que chaque état de l'automate comporte le nom (de famille) du gène qu'il représente, même si l'état en question n'est pas un état final de l'automate, mais un état intermédiaire.
Il y a donc deux tests à créer:
- Un vérifiant que pour chaque état de l'automate il y a bien un K-mer avec le nom du gène.
- Un vérifiant que getMultiResults renvoie la bonne map lorsque la séquence est plus courte que celles associés aux K-mers.Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3208Compléter le test sur getMultiResults qui n'avait pas été terminé2018-06-12T12:36:43+02:00Cyprien BoréeCompléter le test sur getMultiResults qui n'avait pas été terminéDans **tests/unit-tests/testAutomaton.cpp**, compléter la méthode testGetMultiResults pour s'assurer que la méthode retourne bien la bonne map dans le cas général.
(Actuellement on ne teste pas, on se contente de faire des affichages)Dans **tests/unit-tests/testAutomaton.cpp**, compléter la méthode testGetMultiResults pour s'assurer que la méthode retourne bien la bonne map dans le cas général.
(Actuellement on ne teste pas, on se contente de faire des affichages)Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3200Supprimer un sample set supprime forcément les fichiers de séquence : laisser...2020-06-24T17:19:19+02:00Mikaël SalsonSupprimer un sample set supprime forcément les fichiers de séquence : laisser le choixÀ une époque un fichier de séquences n'était que dans un seul sample set. La suppression du sample set conduisait à la suppression du fichier de séquences sans quoi il aurait été orphelin.
Maintenant ce n'est plus vrai.
Si je supprime ...À une époque un fichier de séquences n'était que dans un seul sample set. La suppression du sample set conduisait à la suppression du fichier de séquences sans quoi il aurait été orphelin.
Maintenant ce n'est plus vrai.
Si je supprime un patient dont le fichier de séquences est aussi présent dans un run, est-ce qu'en supprimant le patient j'ai vraiment envie que le fichier de séquences soit supprimé ? On devrait donner le choix, comme on le fait lorsqu'on supprime un fichier de séquences dans un sample set : on demande s'il faut aussi supprimer les résultats ou non.
Ce choix pourrait n'être proposé que si le fichier est associé à plusieurs sample sets.Ryan HerbertRyan Herberthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3197should.py et tests avec utilisation conséquente du shell2018-04-20T16:45:52+02:00Mathieu Giraudshould.py et tests avec utilisation conséquente du shell3 tests posaient des problèmes liés au shell, uniquement sur `kapla` sur ~"dev-ci" (chez moi cela passe, et @mikael-s, chez toi ?) :
```
should-get-tests/10-md5-germline.should-get
should-get-tests/large-r.should-get
should-get-tests/t...3 tests posaient des problèmes liés au shell, uniquement sur `kapla` sur ~"dev-ci" (chez moi cela passe, et @mikael-s, chez toi ?) :
```
should-get-tests/10-md5-germline.should-get
should-get-tests/large-r.should-get
should-get-tests/tools-vdj-assign-direct-input.should-get
```
J'imagine que cela vient, dans `should.py`, de l'appel `subprocess.POpen([cmd], shell=True, ...)` (testé avec `cmd` à la place de `[cmd]`, pas mieux) qui ne réalise pas exactement la même chose que l'invocation précédente dans `should-to-tap`.
Avec 148fc115, on en corrige deux. (Mais pourquoi `{homo-sapiens,mus-musculus,rattus-norvegicus}/*.fa` ne passe pas sur `kapla` alors qu'il passe chez moi ?).
https://gitlab.inria.fr/vidjil/vidjil/-/jobs/89764 -> Il ne reste plus que `should-get-tests/large-r.should-get`, avec un `for`, qui ne passe pas (et bloque #3116).
@mikael-s, si tu es motivé pour trouver ce qu'il bloque, merci... sinon je crée un `large-r.sh` qui fait ce qu'il faut et qui est appelé depuis `large-r.should-get`, cela solutionnera le problème.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3193Color by length2021-09-15T19:18:34+02:00Mathieu GiraudColor by lengthCas particulier de #3678.Cas particulier de #3678.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3191Voir où créer l'automate de filtrage et le transmettre dans les germlines2018-06-13T15:45:33+02:00Mathieu GiraudVoir où créer l'automate de filtrage et le transmettre dans les germlinesÀ discuter la semaine prochaine, après #3190.
cc @boreecÀ discuter la semaine prochaine, après #3190.
cc @boreechttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3190Précéder align_against_collection de la création et du filtrage par automate2018-06-13T15:45:33+02:00Mathieu GiraudPrécéder align_against_collection de la création et du filtrage par automateVers `/* Regular 53 Segmentation */`Vers `/* Regular 53 Segmentation */`Cyprien BoréeCyprien Boréehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3189Corriger les fuites de mémoire en lien avec le filtrage du BioReader2018-06-12T12:36:43+02:00Mikaël SalsonCorriger les fuites de mémoire en lien avec le filtrage du BioReaderSuite à #3080, il y a quelques fuites de mémoire signalées par Valgrind (exemple : https://gitlab.inria.fr/vidjil/vidjil/-/jobs/89489).
N'hésite pas à nous voir si tu as du mal à isoler le problème.Suite à #3080, il y a quelques fuites de mémoire signalées par Valgrind (exemple : https://gitlab.inria.fr/vidjil/vidjil/-/jobs/89489).
N'hésite pas à nous voir si tu as du mal à isoler le problème.Cyprien BoréeCyprien Borée