vidjil issueshttps://gitlab.inria.fr/vidjil/vidjil/-/issues2023-12-22T14:06:58+01:00https://gitlab.inria.fr/vidjil/vidjil/-/issues/5203Heuristics: Improve estimation of combined V/J probabilities ?2023-12-22T14:06:58+01:00Mathieu GiraudHeuristics: Improve estimation of combined V/J probabilities ?
Seen by @mikael-s.
We roughly estimate the $p$-value of a recombination as $p_V + p_J$. But... this is not a probability.
Something such as $1 - (1 - p_V)(1 - p_J)$ is a bit better (and it's still an estimation), but... it's almost eq...
Seen by @mikael-s.
We roughly estimate the $p$-value of a recombination as $p_V + p_J$. But... this is not a probability.
Something such as $1 - (1 - p_V)(1 - p_J)$ is a bit better (and it's still an estimation), but... it's almost equivalent when these probabilites are small.
So ~"wont-fix" ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/5173Merge clonotype on exact VDJ sequence (excluding primers)2023-10-19T14:34:09+02:00THONIER FlorianMerge clonotype on exact VDJ sequence (excluding primers)In some case, user upload data with primers. We have in these cases mix of primer of various length able to be used for a same clonotype. And in some configuration (no-clustering), we saw 2 clonotypes or more that are an artefact.
As p...In some case, user upload data with primers. We have in these cases mix of primer of various length able to be used for a same clonotype. And in some configuration (no-clustering), we saw 2 clonotypes or more that are an artefact.
As position and size of primer can vary, we can't make only a trimming of it.
Can we make a merge based on sequence but limited to Vstart ?
See case here: [59910-50?clone=27,35,45,81](https://app.vidjil.org/59910-50?clone=27,35,45,81)https://gitlab.inria.fr/vidjil/vidjil/-/issues/5164Non-recombined sequence leading to IGK false positive.2023-09-07T16:31:35+02:00Mikaël SalsonNon-recombined sequence leading to IGK false positive.See ~"NAN - Nantes" email on 2023-08-10 mentioning this issue:
He points this sequence:
```
ATGTGGACTCCCTCATGAGCAGATGCCACCAGGGCCACTGGCCCCAGCTTCCTCCTTCACAGCTGCAGTGGGGGCTGGGGCTGGGGCATCCCAGGGAGGGTTTTTGTATGAGCCTGTGTCACAGTGTGTGGTATTCGGCGGAG...See ~"NAN - Nantes" email on 2023-08-10 mentioning this issue:
He points this sequence:
```
ATGTGGACTCCCTCATGAGCAGATGCCACCAGGGCCACTGGCCCCAGCTTCCTCCTTCACAGCTGCAGTGGGGGCTGGGGCTGGGGCATCCCAGGGAGGGTTTTTGTATGAGCCTGTGTCACAGTGTGTGGTATTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTGAGTCTCTTCTCCCCTCTCCTTCCCCGCTCTTGGGACAATTTCTGCTGTTTTTGTTTGTTTCTGTATCTTGTCTCA
```
where we find a `IGKV2D-29 0/78/7 J4`https://gitlab.inria.fr/vidjil/vidjil/-/issues/5116Vidjil-algo see a VDJ with very poor quality instead of 100% germline2023-01-25T19:13:57+01:00THONIER FlorianVidjil-algo see a VDJ with very poor quality instead of 100% germlineThis [clone](https://health.vidjil.org/9389-2?clone=8) is seen as `IGK V2D-29 /78/ J4` instead of `IGLV2`with 242 nt of match (100%).
In this case, we got from vidjil poor affect values :
"_________________________KKK?KKK____________K...This [clone](https://health.vidjil.org/9389-2?clone=8) is seen as `IGK V2D-29 /78/ J4` instead of `IGLV2`with 242 nt of match (100%).
In this case, we got from vidjil poor affect values :
"_________________________KKK?KKK____________K__________________K__K_____________K____________________________________________________kkkkkkkk_kk______________________________K___________________________________________________________________"
In this case, locus IGL is search too.
Algo should be stopped if their is a better evalue for any other locus ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/5115Problème merge de séquences de tailles très différentes2023-04-03T12:32:09+02:00Anne de SeptenvilleProblème merge de séquences de tailles très différentesLors de l'analyse de données réalisées sur des cDNA (et non des ADN comme la plupart du temps), je me suis aperçue que mes résultats sont plus ou moins parasités par des produits d'épissage aberrants plus courts que la séquence complète ...Lors de l'analyse de données réalisées sur des cDNA (et non des ADN comme la plupart du temps), je me suis aperçue que mes résultats sont plus ou moins parasités par des produits d'épissage aberrants plus courts que la séquence complète attendue. Vidjil regroupe toutes ces séquences en une seule car le CDR3 (quand il est identifié) est identique. La taille moyenne des reads sur l'image type "genescan" ne reflète pas la taille effective des reads et dans certains cas, la séquence consensus choisie par Vidjil est une version "courte" ce qui fausse le résultat.
Serait-il possible de faire en sorte que des reads avec de trop grandes différences de tailles ne soient pas regroupés ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/4748Pouvoir invalider "manuellement" quelques k-mers2023-10-20T12:27:43+02:00Mathieu GiraudPouvoir invalider "manuellement" quelques k-mersDepuis #4665 :
> au final, c'est bien une séquence de 12nt présente dans le D et le V, mais nos graines de D ne l'ont pas vue... et donc cela apparaît abusivement comme V. C'est à se demander si on ne pourrait avoir quelque chose de "ma...Depuis #4665 :
> au final, c'est bien une séquence de 12nt présente dans le D et le V, mais nos graines de D ne l'ont pas vue... et donc cela apparaît abusivement comme V. C'est à se demander si on ne pourrait avoir quelque chose de "manuel" pour "invalider" certaines séquences comme celles-là (en pratique, il suffirait de rajouter un "faux D" suffisament long).
>
> Et #996 ?
On pourrait détecter (manuellement, déjà au moins celui de #4665, ou automatiquement #1364) que certains k-mers sont "dangereux" car partagés ou presque et les invalider.Algo 2022.04Mathieu GiraudMathieu Giraudhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4730Plus de STRAND avec nouvelles germlines dans des cas qui devraient être too f...2021-04-01T17:38:13+02:00Mathieu GiraudPlus de STRAND avec nouvelles germlines dans des cas qui devraient être too few V/JPrend la suite de #2107 dans le cadre de !885.
Sur `bug2107.fa`, on a sur !885
```
UNSEG strand -> 5
UNSEG too few V/J -> 9
UNSEG only V/5' -> 1
```
là où avant on avait
```
UNSEG strand -...Prend la suite de #2107 dans le cadre de !885.
Sur `bug2107.fa`, on a sur !885
```
UNSEG strand -> 5
UNSEG too few V/J -> 9
UNSEG only V/5' -> 1
```
là où avant on avait
```
UNSEG strand -> 3
UNSEG too few V/J -> 11
UNSEG only V/5' -> 1
```https://gitlab.inria.fr/vidjil/vidjil/-/issues/4728Nouvelles germlines, séquence hors locus passant de too_few en only_V2021-04-01T17:38:13+02:00Mathieu GiraudNouvelles germlines, séquence hors locus passant de too_few en only_V`segmentation-2.fa` (tous les `L` sont des `-L`, ping #4727)
```
# Sequences outside any V(D)J locus
>too_few_vj-2
GCCTCAGGCCAGCCTTCCGCTCCTTGAAGCTGGTCTCCGCACAGTGCTGGTTCCGTCACCCCCACCCAGGGAAGCAGGTCTGAGCAGCTTGTCCTGGCTG
_L__________________...`segmentation-2.fa` (tous les `L` sont des `-L`, ping #4727)
```
# Sequences outside any V(D)J locus
>too_few_vj-2
GCCTCAGGCCAGCCTTCCGCTCCTTGAAGCTGGTCTCCGCACAGTGCTGGTTCCGTCACCCCCACCCAGGGAAGCAGGTCTGAGCAGCTTGTCCTGGCTG
_L___________________L__________L___________________________L___LLL__________L______________________
==================.=====
# 8 ! seed IGL UNSEG only V/5' 6.300249e+01 6.300000e+01/2.490249e-03
```
Cela fait beaucoup de k-mers pour quelque chose d'aléatoire, avec probablement un match d'au moins 18nt à la suitehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4687SEG_METHOD_ONE_CENTERED, sans minimiseur2021-04-27T15:48:34+02:00Mathieu GiraudSEG_METHOD_ONE_CENTERED, sans minimiseur
Le minimiseur est en général indispensable pour avoir une fenêtre canonique à partir de reads couvrant de manière variable un gène #2643.
Cependant, dans certains cas où l'on recherche une séquence exacte (a priori strictement incluse ...
Le minimiseur est en général indispensable pour avoir une fenêtre canonique à partir de reads couvrant de manière variable un gène #2643.
Cependant, dans certains cas où l'on recherche une séquence exacte (a priori strictement incluse dans les reads d'intérêt) #4686, on peut souhaiter avoir une position centrale sur laquelle on peut s'appuyer.
Prendre dans ce cas la position centrale (coder un `affectanalyser.getCentralPosition()`), entre le premier le dernier k-mer ? (S'il y a tout de même quelques mutations, et bien... on gardera la même position centrale si ces mutations sont "au milieu", d'où asymétrie, mais ce ne serait pas l'utilisation visée)https://gitlab.inria.fr/vidjil/vidjil/-/issues/4665Nouvelles germlines, clustérisation S22 et fenêtre décalée : k-mer commun ent...2023-10-20T12:27:43+02:00Mathieu GiraudNouvelles germlines, clustérisation S22 et fenêtre décalée : k-mer commun entre V et DDepuis https://gitlab.inria.fr/vidjil/vidjil/-/merge_requests/885#note_441064.
L'extrait d'une read de S22 (c'est pareil pour 4 autres reads) :
```
>extract-from-lcl|FLN1FA002P88J7
AGAGCCGAGGACACGGCCGTGTATTACTGTGCGAGAGATCGACATTGTAGTGGTG...Depuis https://gitlab.inria.fr/vidjil/vidjil/-/merge_requests/885#note_441064.
L'extrait d'une read de S22 (c'est pareil pour 4 autres reads) :
```
>extract-from-lcl|FLN1FA002P88J7
AGAGCCGAGGACACGGCCGTGTATTACTGTGCGAGAGATCGACATTGTAGTGGTGGTAGTTGCCGAGGCCTCTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG
```
`vidjil-algo -r 1`, les affects (la seule chose qui change est les germlines) :
```
dev 52 + VJ 1 38 72 106 (...)+H+H+H+H+H+H+H+H+H+H+H+H _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _+V+V+V ? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h _ _ _ _ _ _ _ _ _ _ _ _
!885 53 + VJ 1 60 72 106 (...)+H+H+H+H+H+H+H+H+H+H+H+H _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _+V+V+V ?+H _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h+h _ _ _ _ _ _ _ _ _ _ _ _
```
Un `+H` (J) décale la fenêtre de 11bp, ce qui mène à un clone qui passe à 5 reads avec la nouvelle germline (avant ? 4 ?)
Avant de parler de la clustérisation, j'aimerais comprendre d'où vient ce k-mer et si l'un des deux affects est "le bon".https://gitlab.inria.fr/vidjil/vidjil/-/issues/4664Avoir un outil pour manipuler/comparer les .affects2023-12-15T09:47:01+01:00Mathieu GiraudAvoir un outil pour manipuler/comparer les .affects
- stats sur les `.affects`
- diff entre deux `.affects` sur un read voire sur un ensemble de reads
- stats sur les `.affects`
- diff entre deux `.affects` sur un read voire sur un ensemble de readshttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4226Graines différentes pour V et J : usage2020-04-23T19:24:33+02:00Mathieu GiraudGraines différentes pour V et J : usageAprès #3954/!634.
Attend-on une remise à plat globale des graines #1364 et/ou le seul index pour tous #1169, ou déjà essaie-t-on de mettre dès maintenant quelques J plus petits ? Autre chose ?Après #3954/!634.
Attend-on une remise à plat globale des graines #1364 et/ou le seul index pour tous #1169, ou déjà essaie-t-on de mettre dès maintenant quelques J plus petits ? Autre chose ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/4188Retirer les séquences de faible complexité des germlines ?2022-02-17T18:36:48+01:00Mathieu GiraudRetirer les séquences de faible complexité des germlines ?Voir a089d5b6ed dans !606 :
> It appears that `cacacacacac` exists in a J+down sequence.
Maybe we should remove low-complexity sequences?Voir a089d5b6ed dans !606 :
> It appears that `cacacacacac` exists in a J+down sequence.
Maybe we should remove low-complexity sequences?Algo 2022.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/4056Séquences non recombinées mais KmerSegmentées à tort ?2019-11-23T06:51:30+01:00Mathieu GiraudSéquences non recombinées mais KmerSegmentées à tort ?Deux échantillons a priori indépendants: http://app.vidjil.org/index.html?custom=67009&custom=67033&clone=4
Partagent un `D7-27-0/92/0-J1` (bien taggué depuis #2232), mais aussi deux clones en IGK et IGL, en plus non FineSegmentés. Sera...Deux échantillons a priori indépendants: http://app.vidjil.org/index.html?custom=67009&custom=67033&clone=4
Partagent un `D7-27-0/92/0-J1` (bien taggué depuis #2232), mais aussi deux clones en IGK et IGL, en plus non FineSegmentés. Serait-ce des cas similaires à du D7-27 / J1 ?
Ping #1664
cc @flothoni @duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3981On trouve un clone sur très peu d'identité.2019-09-16T16:58:44+02:00Thonier FlorianOn trouve un clone sur très peu d'identité.Suite à des demandes d'éclaircissement, je regarde pourquoi des clones n'ont pas d'identification VDJ. Je prends les séquences bruts de ce clone par l'identifiant, puis lance vidjil dessus avec `-K` pour voir l'affectation.
Je me rends...Suite à des demandes d'éclaircissement, je regarde pourquoi des clones n'ont pas d'identification VDJ. Je prends les séquences bruts de ce clone par l'identifiant, puis lance vidjil dessus avec `-K` pour voir l'affectation.
Je me rends alors compte que nous prédisons un clone, alors que sur 95nt, nous n'avons que 12 matchs de V au début de la séquence, et 6 matchs de J en fin de séquence, les 80nt intermédiaires étant vides.
De plus, comme nous avons des matchs à 100% sur ces portions, la evalue est assez élevé, à 1.78e-15 et 5e-21.
Le clone concerné est le premier de ce sample : https://app.vidjil.org/?set=33551&config=2&clone=41
```
>seq_identifie_vidjil
GAGACCCTGTCCCTCACCTGCGCTCCTGCGAGACCAGATATAAAACTAGCTGCCAACCCAGCCTGTGGCCAGGTCACCGTCTCCTCAGGTCCT
# 18 + VJ 1 24 72 93 seed IGH SEG_+ 2.087323e-16 4.085299e-22/2.087319e-16+H+H+H+H+H+H+H+H+H+H+H+H _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _+h+h+h+h+h+h _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
```
Je pense que l'on est dans un cas limite, et on ne devrait probablement pas retourner de clone la dessus.
J'ai cherché une issue qui s'y rapporterait. Je ne sais pas si cela à un lien avec #1964, mais le fine pourrait déjà permettre de faire un filtre plus précis non ?
ping @magiraud @mikael-shttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3727Utilisation de getS() ou de la graîne avec Aho-Corasick2019-02-28T20:52:32+01:00Mikaël SalsonUtilisation de getS() ou de la graîne avec Aho-CorasickDans plusieurs endroits du code, notamment `KmerAffectAnalyser::getMaximum`, on utilise le span de la graîne. Or cette graîne peut être différente selon les germlines et selon le gène étudié. Ce n'est pas un problème dans !78 car on a u...Dans plusieurs endroits du code, notamment `KmerAffectAnalyser::getMaximum`, on utilise le span de la graîne. Or cette graîne peut être différente selon les germlines et selon le gène étudié. Ce n'est pas un problème dans !78 car on a un automate par germline et les graînes ne sont pas encore différenciées selon le gène. Mais cela pourrait poser problème plus tard (ou à d'autres endroits du code), notamment avec #1169.Heuristique 2.0https://gitlab.inria.fr/vidjil/vidjil/-/issues/3726AFFECT_UNKNOWN à la fin des affectations avec Aho et probas2019-02-12T14:36:35+01:00Mathieu GiraudAFFECT_UNKNOWN à la fin des affectations avec Aho et probasDepuis !78, tant qu'on a un automate par germline avec des graines fixes, on a `k` affectations `_` à la fin.
Est-ce que cela pourrait fausser nos calculs de p-valeur sur les J ? @mikael\-s : "peut-être, mais l'index load sur les J a te...Depuis !78, tant qu'on a un automate par germline avec des graines fixes, on a `k` affectations `_` à la fin.
Est-ce que cela pourrait fausser nos calculs de p-valeur sur les J ? @mikael\-s : "peut-être, mais l'index load sur les J a tellement baissé qu'on ne le verrait probablement pas". À voir en tout cas.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3584Germline unexpected : comment remonter à la bonne germline ?2024-03-27T16:43:37+01:00Mikaël SalsonGermline unexpected : comment remonter à la bonne germline ?La fonction `Germline::override_rep5_rep3_from_labels` permet normalement de faire cela. Elle est utilisée lorsqu'on est en unexpected afin d'aligner la séquence contre les bons répertoires.
Les répertoires corrects sont trouvés grâce a...La fonction `Germline::override_rep5_rep3_from_labels` permet normalement de faire cela. Elle est utilisée lorsqu'on est en unexpected afin d'aligner la séquence contre les bons répertoires.
Les répertoires corrects sont trouvés grâce aux KmerAffect. Mais… ces KmerAffect sont les mêmes pour un germline complet et incomplet (le shortcut est par exemple `H` en complet et `h` en incomplet) :
```c++
affect_5 = string(1, toupper(shortcut)) + "-" + code + "V";
affect_4 = string(1, 14 + shortcut) + "-" + code + "D";
affect_3 = string(1, tolower(shortcut)) + "-" + code + "J";
```
On pourrait se dire que ce n'est pas grave et qu'on va mettre des KmerAffect différents pour les germlines complets et incomplets… sauf que non. Si on fait cela la partie commune des germlines complets et incomplets (souvent les gènes J) seraient considérés comme ambigus car appartenant à des germlines différents.Heuristique 2.0https://gitlab.inria.fr/vidjil/vidjil/-/issues/3388Agrandir la taille des graines pour limiter les faux positifs2019-11-23T06:51:30+01:00Mikaël SalsonAgrandir la taille des graines pour limiter les faux positifsDans vdj#693 on se rend compte que certains faux positifs peuvent gêner la segmentation. Ces faux positifs sont dus à une taille de graine faible en TRA+D (c'est un `-k 9`).
Historiquement on a cette petite taille car les TRDD sont cour...Dans vdj#693 on se rend compte que certains faux positifs peuvent gêner la segmentation. Ces faux positifs sont dus à une taille de graine faible en TRA+D (c'est un `-k 9`).
Historiquement on a cette petite taille car les TRDD sont courts. Mais maintenant qu'on utilise les régions amont et aval cette raison n'a plus de sens.
Il serait bon de remonter cette valeur à `-s 10s`, voire plus, sans forcément attendre #1364.Algo -- Importanthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3386Indexer séparément, mais à la suite, les up/down-stream2018-07-16T07:31:14+02:00Mathieu GiraudIndexer séparément, mais à la suite, les up/down-streamNous aimons le up/down-stream. Nous avons fait #3008 pour J+down, et, précédemment, la même chose Dd2/Dd3.
Mais idéalement, on devrait distinguer des situations comme `JJJJJdddd`, `JJJJJCCCCC`, `JJJJJ----`. Et, avec des reads non-longu...Nous aimons le up/down-stream. Nous avons fait #3008 pour J+down, et, précédemment, la même chose Dd2/Dd3.
Mais idéalement, on devrait distinguer des situations comme `JJJJJdddd`, `JJJJJCCCCC`, `JJJJJ----`. Et, avec des reads non-longues, `JJJJJdddddCCCC` ne devrait pas arriver.
Certes, avoir d'un côté `J.fa` et de l'autre `J+down.fa` fournit une solution, idem pour Dd2/Dd3, couplé avec des entrées dans `germline.h` différentes (et des méthodes de segmentation différentes), mais on sent la recopie d'informations. Et même en situation "normale" `JJJJJdddd`, on aimerait #3147, mais là cela relève plutôt du FineSegmenter.
Serait-ce possible d'avoir un mécanisme où l'on indexe directement `(J + down)`, avec un kmer `down` déclenché
dès le premier nucléotide de `down` ? Avec Aho, c'est peut-être encore plus simple à implémenter ?
Cela demanderait aussi d'adapter les méthodes de segmentation... ou possiblement #3377.
Ping #2138.