vidjil issueshttps://gitlab.inria.fr/vidjil/vidjil/-/issues2023-11-28T12:09:34+01:00https://gitlab.inria.fr/vidjil/vidjil/-/issues/4951Ne construire l'image docker qu'une fois dans le CI2023-11-28T12:09:34+01:00Thonier FlorianNe construire l'image docker qu'une fois dans le CIEn discutant avec @duez, on se disait qu'il serait bon d'avoir une seule fois l'étape de création de l'image docker qui est fastidieuse (8 minutes environ) et relancée pour chaque jobs client/server dans le CI (x12 donc).
Il faut donc e...En discutant avec @duez, on se disait qu'il serait bon d'avoir une seule fois l'étape de création de l'image docker qui est fastidieuse (8 minutes environ) et relancée pour chaque jobs client/server dans le CI (x12 donc).
Il faut donc extraire la création de l'image docker dans un stage dédié, splitter en client/server, que l'on construise une image avec un hash dédié et que l'on stock cette image quelque part pour être accessible sur tous les runners.https://gitlab.inria.fr/vidjil/vidjil/-/issues/4599Algo, indiquer la raison de non-productivité2021-02-03T10:01:50+01:00Thonier FlorianAlgo, indiquer la raison de non-productivitéOn pourrait afficher la raison lorsque c'est disponible. Igblast indique par exemple `out-of-frame`, `codon-stop`.
Il fuadrait pouvoir le calculer, et je pense que c'est possible puisque déjà utiliser pour le définir.
il faut dans un ...On pourrait afficher la raison lorsque c'est disponible. Igblast indique par exemple `out-of-frame`, `codon-stop`.
Il fuadrait pouvoir le calculer, et je pense que c'est possible puisque déjà utiliser pour le définir.
il faut dans un second temps le mettre dans le format vidjil, puis l'exploiter dans le client.Algo 2021.02Mathieu GiraudMathieu Giraudhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4598getHTMLInfo: afficher la productivité du clone2022-01-18T09:24:09+01:00Thonier FloriangetHTMLInfo: afficher la productivité du cloneJe me rends compte que l'on a pas la productivité qui est affiché dans le getHTMLinfo.Je me rends compte que l'on a pas la productivité qui est affiché dans le getHTMLinfo.https://gitlab.inria.fr/vidjil/vidjil/-/issues/4500Vue QC : accéder au sample2022-07-26T09:44:22+02:00Mikaël SalsonVue QC : accéder au sampleLorsqu'on est sur la vue QC, on aimerait ensuite passer à la vue du patient en question.Lorsqu'on est sur la vue QC, on aimerait ensuite passer à la vue du patient en question.https://gitlab.inria.fr/vidjil/vidjil/-/issues/4485Tutorial dataset doesn't exist anymore2020-09-28T17:33:27+02:00Mikaël SalsonTutorial dataset doesn't exist anymoreExpected address: http://www.vidjil.org/seqs/tutorial_dataset.zipExpected address: http://www.vidjil.org/seqs/tutorial_dataset.ziphttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4165Nouvelle vue pour l'affichage des warnings2023-01-13T16:47:09+01:00Mikaël SalsonNouvelle vue pour l'affichage des warningsUne manière d'améliorer l'affichage (car maintenant trop de warnings partout #4049) cela serait de proposer un panneau où tous les warning présents seraient listés (dans l'ordre de leur priorité).
Pour chaque warning on aurait la liste ...Une manière d'améliorer l'affichage (car maintenant trop de warnings partout #4049) cela serait de proposer un panneau où tous les warning présents seraient listés (dans l'ordre de leur priorité).
Pour chaque warning on aurait la liste des clones concernés (dans une sorte de segmenteur ?). Parmi le lot de warnings, l'utilisatrice peut ainsi voir rapidement lesquels lui semblent les plus pertinents.
On n'aurait plus besoin d'inonder l'interface de petits :warning:, on pourrait se contenter d'afficher ceux vraiment importants. Et, dans le menu par exemple, on pourrait avoir une icône indiquant le nombre de warnings total, cliquer dessus permettrait d'accéder au panneau que je propose.Web 2022.122021-05-17https://gitlab.inria.fr/vidjil/vidjil/-/issues/3837CLI11 / vidjil-algo: --options in.json2019-04-02T18:37:45+02:00Mathieu GiraudCLI11 / vidjil-algo: --options in.json`--options in.json` takes `in.json`.
- [ ] Parses `options`, and copies everything to the `.vidjil` output.
- [x] (bonus) evaluates all the options as regular ~"cpp\-options" ?`--options in.json` takes `in.json`.
- [ ] Parses `options`, and copies everything to the `.vidjil` output.
- [x] (bonus) evaluates all the options as regular ~"cpp\-options" ?Algo 2019.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/3816Commande pour filtrer les reads sur la taille, pour les dimers2023-06-28T18:04:19+02:00Thonier FlorianCommande pour filtrer les reads sur la taille, pour les dimersLeur envoyer déjà une ligne de commande, et pourquoi par faire un micro script avec cette commande à envoyer en pre-preprocess.Leur envoyer déjà une ligne de commande, et pourquoi par faire un micro script avec cette commande à envoyer en pre-preprocess.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3752Utiliser une version fixe de Web2py2019-02-27T23:01:10+01:00Mikaël SalsonUtiliser une version fixe de Web2pyNous utilisons, à la fois pour nos tests et pour nos serveurs de prod, les dernières versions des **sources** de Web2py disponibles (pas les dernières releases). Rien ne garantit donc le bon fonctionnement de ces packages comme l'illustr...Nous utilisons, à la fois pour nos tests et pour nos serveurs de prod, les dernières versions des **sources** de Web2py disponibles (pas les dernières releases). Rien ne garantit donc le bon fonctionnement de ces packages comme l'illustre #3751.
Ne devrait-on pas plutôt fixer la version de Web2py utilisée ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/3624Garder les fichiers bruts tels qu'uploadés ?2021-03-17T09:35:49+01:00Mikaël SalsonGarder les fichiers bruts tels qu'uploadés ?Beaucoup de tâches FAILED ces derniers temps : une hypothèse serait des problèmes avec Pear. Le problème c'est qu'après le pre-process on n'a plus accès aux fichiers d'origine pour reproduire un éventuel problème.
Faudrait-il conserver ...Beaucoup de tâches FAILED ces derniers temps : une hypothèse serait des problèmes avec Pear. Le problème c'est qu'après le pre-process on n'a plus accès aux fichiers d'origine pour reproduire un éventuel problème.
Faudrait-il conserver les fichiers tels qu'ils ont été uploadés ? Au moins quelques jours pour éviter de saturer l'espace disque ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/3554bouton dans l'interface pour relancer le swheduler web2py2021-03-05T15:51:00+01:00Thonier Florianbouton dans l'interface pour relancer le swheduler web2pyUne petite question dont je ne suis pas certain de la pertinence: serait-il envisageable de rajouter un bouton pour relancer automatiquement la commande qui relance le scheduler ?
Techniquement, je présume que ce n'est pas si compliqué...Une petite question dont je ne suis pas certain de la pertinence: serait-il envisageable de rajouter un bouton pour relancer automatiquement la commande qui relance le scheduler ?
Techniquement, je présume que ce n'est pas si compliqué que ça. Cependant, ça risque de pérenniser un problème dont on ne connaît toujours pas l'origine (il me semble).
@magiraud @mikael\-s @RyanHerbhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3496qc-stats (via le serveur) : vérification et mise en prod2020-12-03T12:42:36+01:00Mathieu Giraudqc-stats (via le serveur) : vérification et mise en prod@flothoni, pourrais-tu uploader deux-trois samples sur `dev`, en mettre un également dans un run, et regarder si le "stats" fait par @RyanHerb (Compare Samples > Ctrl-A > stats) est pertinent ? Est-ce que le Genescan semble correct ?
A...@flothoni, pourrais-tu uploader deux-trois samples sur `dev`, en mettre un également dans un run, et regarder si le "stats" fait par @RyanHerb (Compare Samples > Ctrl-A > stats) est pertinent ? Est-ce que le Genescan semble correct ?
Attendre pour cela quelques jours que @RyanHerb finisse les issues en cours #3454 #3455 #3456 #3493 #3497. On peut en parler par exemple vendredi à l'audio ensemble.
Après la mise en prod, on pourra aussi tester des choses type #3409 ou autre.Web 2020.122020-10-20https://gitlab.inria.fr/vidjil/vidjil/-/issues/3436Statistiques : tester, mettre en production pour tous2018-10-02T18:33:52+02:00Mathieu GiraudStatistiques : tester, mettre en production pour tousSuite à #2235.
Voir aussi #3171.Suite à #2235.
Voir aussi #3171.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3381top par système dans vidjil-algo2024-02-01T16:01:57+01:00Mathieu Giraudtop par système dans vidjil-algoDepuis #1382.
Faire un `-z` (ping #3295) par système.Depuis #1382.
Faire un `-z` (ping #3295) par système.Algo 2022.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/2475Réduire le nombre de requêtes pour la requête Sample_Set2024-02-06T11:57:18+01:00Ryan HerbertRéduire le nombre de requêtes pour la requête Sample_SetDans la même veine que #2439 il serait bien de réduire la charge de la BDD, et d'essayer de rendre l'application plus rapide.
Voici ce qu'il se passe du point de vue de la BDD pour une requête de 4 patients (découpée en plusieurs blocks...Dans la même veine que #2439 il serait bien de réduire la charge de la BDD, et d'essayer de rendre l'application plus rapide.
Voici ce qu'il se passe du point de vue de la BDD pour une requête de 4 patients (découpée en plusieurs blocks à mesure que j'identifie les requêtes) :
``` SQL
SELECT 1
SET FOREIGN_KEY_CHECKS=1
SET sql_mode='NO_BACKSLASH_ESCAPES'
SELECT auth_membership.id, auth_membership.user_id, auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 2)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 3)
commit
```
Ces requêtes sont de `self.has_permission()` dans `vidjil_accessible_query()`. Le but étant de vérifier si l'utilisateur a les accès "admin" pour cette table et cette action:
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
```
Je suis admin, donc on renvoi tous les patients:
``` SQL
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id > 0) ORDER BY patient.id DESC LIMIT 51 OFFSET 0
```
Ici c'est un appel à `load_permissions()`, qui fait appel à `vidjil_accessible_query()` deux fois (pour charger tous les patients/runs/sets en mémoire et stocker la permission):
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT patient.id FROM patient WHERE (patient.id > 0)
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'admin') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT patient.id FROM patient WHERE (patient.id > 0)
```
Encore un appel à `load_permissions()` cette fois-ci pour les permissions anon. On n'est pas "admin" car les admins doivent voir les vrais noms de leurs patients :) :
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT patient.id FROM patient WHERE (patient.id > 0)
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'anon') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT auth_membership.group_id FROM auth_permission, auth_membership WHERE ((((auth_membership.user_id = 1) AND (auth_membership.group_id = auth_permission.group_id)) AND (auth_permission.record_id = 0)) AND (auth_permission.name = 'anon'))
SELECT patient.id FROM patient WHERE ((patient.id IN (SELECT auth_permission.record_id FROM auth_permission, auth_membership WHERE (((((auth_membership.user_id = 1) AND (auth_membership.group_id IN (1))) AND (auth_membership.group_id = auth_permission.group_id)) AND (auth_permission.name = 'access')) AND (auth_permission.table_name = 'patient')))) OR (patient.id IN (SELECT auth_permission.record_id FROM auth_permission, group_assoc, auth_membership WHERE ((((((auth_membership.user_id = 1) AND (auth_membership.group_id IN (1))) AND (auth_membership.group_id = group_assoc.second_group_id)) AND (group_assoc.first_group_id = auth_permission.group_id)) AND (auth_permission.name = 'access')) AND (auth_permission.table_name = 'patient')))))
```
Ici on a des vérifications d'existence effectuées dans les fonctions `can_view_info()`:
``` SQL
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 11) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 10) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 9) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 8) LIMIT 1 OFFSET 0
```
Ces requêtes sont relativement raisonnables. Récupèrent les noms des créateurs et les tailles des sample sets:
``` SQL
SELECT patient.id, auth_user.last_name FROM auth_user, patient WHERE ((patient.creator = auth_user.id) AND (patient.id IN (8,9,10,11)))
SELECT patient.id, sequence_file.size_file FROM sample_set_membership, patient, sequence_file WHERE (((sample_set_membership.sample_set_id = patient.sample_set_id) AND (sequence_file.id = sample_set_membership.sequence_file_id)) AND (patient.id IN (8,9,10,11)))
```
`load_config_information` contient deux `vidjil_accessible_query`:
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'config')) AND (auth_permission.record_id = 0))
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'admin') AND (auth_permission.table_name = 'config')) AND (auth_permission.record_id = 0))
SELECT patient.id, config.name, config.id, fused_file.fused_file FROM patient, config, fused_file WHERE ((((patient.sample_set_id = fused_file.sample_set_id) AND (fused_file.config_id = config.id)) AND ((config.id >
0) OR (config.id > 0))) AND (patient.id IN (8,9,10,11)))
```
`load_permitted_groups()`:
``` SQL
SELECT patient.id, auth_group.role FROM auth_group, auth_permission, patient WHERE ((((((patient.id = auth_permission.record_id) OR (auth_permission.record_id = 0)) AND (auth_permission.table_name = 'patient')) AND (auth_permission.name = 'access')) AND (auth_group.id = auth_permission.group_id)) AND (patient.id IN (8,9,10,11)))
```
`load_anon_permissions()`... On n'avait pas fait ça plus haut ??? :
``` SQL
SELECT patient.id FROM auth_group, auth_permission, patient, auth_membership WHERE (((((((auth_permission.name = 'anon') AND (auth_permission.table_name = 'patient')) AND (patient.id = auth_permission.record_id)) AND (auth_group.id = auth_permission.group_id)) AND (auth_membership.user_id = 1)) AND (auth_membership.group_id = auth_group.id)) AND (patient.id IN (8,9,10,11)))
```
On charge tous les utilisateurs ? Pas trouvé dans le code... :
``` SQL
SELECT auth_user.id, auth_user.first_name, auth_user.last_name, auth_user.email, auth_user.password, auth_user.registration_key, auth_user.reset_password_key, auth_user.registration_id FROM auth_user WHERE (auth_user.id > 1)
```
Encore des vérifications d'existence... Pas trouvé l'endroit dans le code:
``` SQL
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 11) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 10) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 9) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 8) LIMIT 1 OFFSET 0
```
Vérifie si l'utilisateur a le droit de créer des patients/runs/sets :
``` SQL
SELECT auth_membership.group_id FROM auth_permission, auth_membership WHERE ((((auth_membership.user_id = 1) AND (auth_membership.group_id = auth_permission.group_id)) AND (auth_permission.record_id = 0)) AND (auth_permission.name = 'create'))
commit
```
A identifier:
``` SQL
SELECT 1
SET FOREIGN_KEY_CHECKS=1
SET sql_mode='NO_BACKSLASH_ESCAPES'
SELECT auth_membership.id, auth_membership.user_id, auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 2)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 3)
commit
```Ryan HerbertRyan Herberthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/2405Streamer directement les fichiers de résultats qu'on propose de télécharger2017-05-12T14:57:59+02:00Mikaël SalsonStreamer directement les fichiers de résultats qu'on propose de téléchargerDepuis #2141 on peut récupérer les fichiers de résultats produits par les logiciels.
Voici le bout de code qui se charge de l'envoyer à l'utilisateur :
```python
with open(filepath) as f:
file_content = f.rea...Depuis #2141 on peut récupérer les fichiers de résultats produits par les logiciels.
Voici le bout de code qui se charge de l'envoyer à l'utilisateur :
```python
with open(filepath) as f:
file_content = f.read()
return response.stream(StringIO.StringIO(file_content), attachment = True, filename = request.vars['filename'])
```
On stocke donc la totalité du fichier dans une variable `file_content`. Or les fichiers de sortie peuvent être assez gros (plusieurs centaines de Mo, on doit pouvoir en trouver de quelques Go). Il vaudrait mieux directement les streamer, sans avoir à les stocker dans une variable, pour éviter d'utiliser de la mémoire (potentiellement beaucoup).Web 2017.05Ryan HerbertRyan Herberthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/2155Tracer la version de germlines utilisée dans l'algo2018-09-07T08:06:04+02:00Mathieu GiraudTracer la version de germlines utilisée dans l'algoSuite à #2154 :
De la même manière qu'on fait attention à la version de l'algo, ne faudrait-il pas stocker le `germline_id` dans le `.vidjil` ?
Je pinaille, mais bon...
@mikael-sSuite à #2154 :
De la même manière qu'on fait attention à la version de l'algo, ne faudrait-il pas stocker le `germline_id` dans le `.vidjil` ?
Je pinaille, mais bon...
@mikael-sAlgo 2017.03https://gitlab.inria.fr/vidjil/vidjil/-/issues/5268Bug with sampling date not filled2024-03-22T14:08:34+01:00THONIER FlorianBug with sampling date not filledTested; At least we don't send sampling date in our request.Tested; At least we don't send sampling date in our request.Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5264Lien vers l'analyse qui n'apparaît pas2024-03-25T17:15:56+01:00Anne de SeptenvilleLien vers l'analyse qui n'apparaît pasBonjour,
J'ai à nouveau des analyses dont les liens d'accès n'apparaissent pas. J'en ai déjà parlé ici #5196 pour des analyse IGK. J'ai à nouveau ce problème pour la patient 62835 dont j'ai lancé les analyses IGH et clonality-no-clu...Bonjour,
J'ai à nouveau des analyses dont les liens d'accès n'apparaissent pas. J'en ai déjà parlé ici #5196 pour des analyse IGK. J'ai à nouveau ce problème pour la patient 62835 dont j'ai lancé les analyses IGH et clonality-no-clustering.
J'arrive quand même à accéder à l'analyse en passant pas "compare some of these samples" puis "see result" mais c'est tout sauf pratique et pose d'autres problèmes ensuite.Web hotfix 2024.01CHESNIN ClementCHESNIN Clementhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/5262Erreur 500 à l'ouverture d'un run ou d'un set2024-03-05T11:19:06+01:00Anne de SeptenvilleErreur 500 à l'ouverture d'un run ou d'un setBonjour,
J'ai uploadé des fastq via l'API ce matin. (En plusieurs fois car plusieurs projets différents + quelques debug et corrections de mon côté)
Pas de problème lors des premiers imports mais avec le dernier j'ai maintenant un...Bonjour,
J'ai uploadé des fastq via l'API ce matin. (En plusieurs fois car plusieurs projets différents + quelques debug et corrections de mon côté)
Pas de problème lors des premiers imports mais avec le dernier j'ai maintenant une erreur : An error occured (Internal Server Error, code 500) quand je veux ouvrir le run et le set dans lequel sont ces derniers fastq. L'ouverture des résultats via la page patient a l'air ok.Web 2024.04CHESNIN ClementCHESNIN Clement