vidjil issueshttps://gitlab.inria.fr/vidjil/vidjil/-/issues2021-01-11T15:25:03+01:00https://gitlab.inria.fr/vidjil/vidjil/-/issues/1344C++11 ?2021-01-11T15:25:03+01:00Vidjil TeamC++11 ?Tâche remise au goût du jour : est-on prêt à passer en C++11 ?
Quelle est la diffusion de C++11 ?
- est-ce que rbx compile ?
- est-ce que Mikaël compile ?
- est-ce que Mathieu, avec son OS décadent, compile ?
- et pour les milli...Tâche remise au goût du jour : est-on prêt à passer en C++11 ?
Quelle est la diffusion de C++11 ?
- est-ce que rbx compile ?
- est-ce que Mikaël compile ?
- est-ce que Mathieu, avec son OS décadent, compile ?
- et pour les milliers d'utilisateurs qui téléchargent nos sources ?
***
Est-ce que mettre -std=c++11 et recompiler Vidjil fonctionne chez vous ? (bien faire un make clean)
Marc, tu peux pousser une branche c11 pour qu'on teste tous la même chose...
***
gcc: https://gcc.gnu.org/wiki/C11Status
***
Version stable d'Ubuntu : ok ?
***
Pour mémoire, les avantages de passer à C++11 :
- parser json ("Parser le MultiGermline")
- docopt C++11 ("Traitement de options")
- et quelques auto dans les templates ?
***
sous g++ 4.6 (ubuntu 12.04) -> -std=gnu++0x
sous g++ 4.8 (ubuntu 14.04) -> -std=c++11
ca compile ... et la librairie json a l'air de fonctionner
***
sous g++ 4.6 (ubuntu 12.04) -> -std=gnu++0x
sous g++ 4.8 (ubuntu 14.04) -> -std=c++11
ca compile ... et la librairie json a l'air de fonctionner
***
sous g++ 4.6 (ubuntu 12.04) -> -std=gnu++0x
sous g++ 4.8 (ubuntu 14.04) -> -std=c++11
ca compile ... et la librairie json a l'air de fonctionner
***
ok, d'accord
***
Remarque importante : pour l'instant, faire tous les dev c+11 uniquement sur la branche c+11
***
CentOS 6 (maintenue jusqu'en 2017) embarque gcc 4.4 qui a un support limité de C++11 (pas de lambda fonctions par exemple) : https://gcc.gnu.org/gcc-4.4/cxx0x_status.html
***
Oui... et on trouvera plein d'autres systèmes stables sans bon support C++11. Je propose qu'on ne revienne pas sur la décision : on va basculer sur C++11. Par contre, il faut trouver un moyen correct d'avoir notre intégration continue.
Trois solutions :
- on arrive à installer un gcc correct sur CentOS 6 : http://www.necessaryandsufficient.net/2014/07/c11-on-centos/
- on met plutôt un slave CentOS 7
- on enlève CentOS des slaves !
***
@nobodyhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4128Afficher le nombre de sample affichés depuis la nouvelle graphlist2021-11-22T14:28:46+01:00Thonier FlorianAfficher le nombre de sample affichés depuis la nouvelle graphlistMaintenant que nous avons des gens qui utilisent les runs, et qu'ils contiennent beaucoup de samples en même temps, et qu'ils les cachent parfois, il serait bon d'avoir un indicateur qui rappelle le nombre de samples actuellement affiché...Maintenant que nous avons des gens qui utilisent les runs, et qu'ils contiennent beaucoup de samples en même temps, et qu'ils les cachent parfois, il serait bon d'avoir un indicateur qui rappelle le nombre de samples actuellement affichés et le nombre total de ceux-ci.
Où ? Dans une ligne de la graphlist, dans le champ info ?Thonier FlorianThonier Florianhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3764SampleReads : échantillon aléatoire des reads.2020-07-28T19:39:52+02:00Mikaël SalsonSampleReads : échantillon aléatoire des reads.@Anne m'a parlé de problèmes de séquences consensus qui ne représentent pas vraiment l'ensemble des reads du clone.
C'est dû à notre manière de conserver les reads : quand il y en a trop on n'en conserve qu'un échantillon composé des re...@Anne m'a parlé de problèmes de séquences consensus qui ne représentent pas vraiment l'ensemble des reads du clone.
C'est dû à notre manière de conserver les reads : quand il y en a trop on n'en conserve qu'un échantillon composé des reads les plus longs et de meilleure qualité. Dans certains cas cela peut entraîner un biais, comme favoriser les séquences qui possèdent des insertions.
On pourrait essayer de ne conserver qu'un échantillon aléatoire des reads qui, selon la statistique, devrait être représentatif de l'ensemble des reads. Si les reads ainsi conservés sont de mauvaise qualité ou trop courts… hé bien on n'aurait pas fait mieux avec l'échantillon complet.
@Anne n'hésite pas à nous pointer vers un ou deux exemples pour qu'on puisse tester si cela changerait effectivement quelque chose.Mikaël SalsonMikaël Salsonhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/1547Mettre plus de tags (couleurs) sur les clones (v2)2022-06-15T11:16:31+02:00Vidjil TeamMettre plus de tags (couleurs) sur les clones (v2)Alice n'a pas assez de choix dans les couleurs. Un menu avec 16 couleurs rique d'être un peu long… Si on fixe les couleurs attention à toujours avoir des couleurs daltonien compliant.
***
Dégradé de couleur par système ? Pour s'y retrouv...Alice n'a pas assez de choix dans les couleurs. Un menu avec 16 couleurs rique d'être un peu long… Si on fixe les couleurs attention à toujours avoir des couleurs daltonien compliant.
***
Dégradé de couleur par système ? Pour s'y retrouver dans tous ses clones
***
En mono-système, le système actuel est le bon.
En multi...
Une solution pourrait être d'avoir toujours des labels "sémantiques" (clone 1 / clone 2 / clone 3 / standard ....) mais de multiplier cela par les couleurs de système.
Quelques part ce serait même plus logique, cela ferait un seul système de couleur pour tout, au lieu de deux (icônes locus + tags.)
On pourrait d'ailleurs ne multiplier que par 3-4 labels, et avoir des gris/noir pour les trucs autres.
Mais faire tout cela serait peut-être dommage pour le cas mono-système.
***
@nobodyWeb 2022.05Mathieu GiraudMathieu Giraudhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/2913Diminuer ou décaler dynamiquement, par seuil, la taille de la fenêtre2020-04-15T09:18:25+02:00Mikaël SalsonDiminuer ou décaler dynamiquement, par seuil, la taille de la fenêtreDans #2910 on manque un clone car il y a une grosse délétion dans le V, consuisant à une séquence très courte (~129nt) empêchant de bien positionner une fenêtre de 60nt.
C'est très grave puisqu'on peut manquer des clones majoritaires. U...Dans #2910 on manque un clone car il y a une grosse délétion dans le V, consuisant à une séquence très courte (~129nt) empêchant de bien positionner une fenêtre de 60nt.
C'est très grave puisqu'on peut manquer des clones majoritaires. Une solution est de décaler la fenêtre #1580 (soit en encodant directement le décalage, dans la config, mais cela signifie que c'est systématique, soit dynamiquement mais c'est compliqué).
Une autre solution simple serait de prendre une fenêtre plus petite si on n'arrive pas à placer la fenêtre de 60nt. On pourrait essayer différentes longueurs, par ordre décroissant, par seuils (60, 50, 40, 30…) et on prend la première qui passe. Cela permet d'avoir quelque chose de reproductible. Et cela éviterait de passer à côté d'un gros clone.Algo 2017.11Mikaël SalsonMikaël Salsonhttps://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/1362Upload de plusieurs fichiers via des formulaires web2018-03-21T19:04:38+01:00Vidjil TeamUpload de plusieurs fichiers via des formulaires webTâche spécialisée depuis la tâche originale déplacée dans #2891.
Tâche spécialisée depuis la tâche originale déplacée dans #2891.
Web 2018.01Ryan HerbertRyan Herberthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/1324mise au point2017-02-01T19:20:19+01:00Vidjil Teammise au point
***
#1322
***
#1322https://gitlab.inria.fr/vidjil/vidjil/-/issues/1323fuse2018-11-20T12:10:23+01:00Vidjil Teamfuse
***
#1322
***
#1322https://gitlab.inria.fr/vidjil/vidjil/-/issues/998Comparer plusieurs samples : log-log2019-03-21T15:11:35+01:00Vidjil TeamComparer plusieurs samples : log-logScénarios :
- labos différents (qc)
- logiciels différents
- patients différents
- barcodes différents
- même patient, système différent (ok, fait, généraliser ou pas ?)
3d ? axe générique ?
visualisation +, de manière ...Scénarios :
- labos différents (qc)
- logiciels différents
- patients différents
- barcodes différents
- même patient, système différent (ok, fait, généraliser ou pas ?)
3d ? axe générique ?
visualisation +, de manière plus quantitative, commun / *absents*
***
Point à discuter tous ensemble
***
- Liste avec le diff (genre TP/FP/FN)
- Scatterplot en courbe log/log ? (Et on peut cliquer et comparer les points)
***
Le scatterplot serait déjà très utile pour comparer deux timepoints
***
Quoique... le graphe est très bien pour cela, et permet de faire plein de points en même temps
***
Th. Linggner suggérait (mail 14 déc) :
"- a venn diagram showing the overlap of clones in two genotypes (based on the top 100 clones) and the proportion of reads for the top 20 clones (we merged the samples of the genotypes)"
On pourrait effectivement rajouter un Venn.
(Et cela donne envie d'avoir le Venn pour *tous* les clones, mais cela demanderait un lancement particulier de fuse avec une sortie particulière pour pas qu'elle soit trop grosse)
***
Proposition, sans faire de Venn (trop binaire) : avoir une courbe log-log.
Pour cela, il suffirait d'avoir un axe "size" d'un *autre point* que le point sélectionné, et donc de faire un graphe "size" (le point sélectionné) / "size" (l'autre).
Aïe, comment référencer un autre point ?
- facile : en statique, on pourrait créer autant d'axes "size at point 0 / point 1 / ... / "
- plus difficile, en dynamique, faut-il avoir un moyen de (shift-)cliquer sur le graphe pour sélectionner un autre point ? Bof/bof, encore une interaction.
- ou bien faire que l'autre point soit l'avant-dernier sélectionné (et, quand un axe "size at other point" est sélectionné, ce point est mis en évidence dans le graphe ?)
***
8d3917f..8e87d0a
***
@mikael-s @Duez @magiraudhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/5104Faciliter le process de création de compte2022-12-14T18:14:29+01:00Mathieu GiraudFaciliter le process de création de compte
Création / upload accordé automatique, mais attention à la sécurité / spam.
La première analyse resterait manuelle.
Après py4web.
Création / upload accordé automatique, mais attention à la sécurité / spam.
La première analyse resterait manuelle.
Après py4web.https://gitlab.inria.fr/vidjil/vidjil/-/issues/2062Authentification par LDAP2021-10-22T11:07:25+02:00Thonier FlorianAuthentification par LDAPEvoqué au CHU de Rennes :
Possibilité de passer par un system d'authentification par LDAP.
Celui-ci permettrait de révoquer ou autoriser les accès plus simplement sans avoir à gérer la création de compte pour l'admin local.
D'après ...Evoqué au CHU de Rennes :
Possibilité de passer par un system d'authentification par LDAP.
Celui-ci permettrait de révoquer ou autoriser les accès plus simplement sans avoir à gérer la création de compte pour l'admin local.
D'après eux, relativement répandu comme système de gestion des accès. Cela dit, pas obligatoire du tout.
Pour l'application à Vidjil, il faudrait quand meme que l'ensemble des comptes pointent vers un meme groupe d'utilisateurs pour partager les données et résultats de patients.
@magiraud @mikael-s @RyanHerbmarc duezmarc duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/1200Anonymisation des données2016-11-29T14:33:06+01:00Vidjil TeamAnonymisation des donnéesQui voit les noms/prénoms/birth ?
- soit seul le propriétaire (ceux qui ont les droits d'admin)
- soit ceux qui ont les droits d'écriture
(mais idéalement, il faudrait que le system admin ne voie pas tout cela...)
- ou bie...Qui voit les noms/prénoms/birth ?
- soit seul le propriétaire (ceux qui ont les droits d'admin)
- soit ceux qui ont les droits d'écriture
(mais idéalement, il faudrait que le system admin ne voie pas tout cela...)
- ou bien faire un autre droit (lourd, on risque de ne plus s'y retrouver)
$Pour tous les autres :
- pour l'instant 3 lettres prénom / 3 lettres nom
- et par la suite on fera quelque chose de mieux. Identifiant hopital ? Hash ? id vidjil ?
***
Pour l'instant trop flou, en rediscuter ensemble avant d'implémenter
***
@Duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3872Enlerver d'un coup tous les autres samples d'une analyse2021-11-22T12:32:45+01:00Thonier FlorianEnlerver d'un coup tous les autres samples d'une analyseLa demande est quelque part similaire à #2726. Après avoir ouvert un run, on voudrait pouvoir recentrer sur un seul fichier, voir sur ce patient, voir sur ce sample.
Dans ce cas, il faut reouvrir le sample différemment. Mais on pourrai...La demande est quelque part similaire à #2726. Après avoir ouvert un run, on voudrait pouvoir recentrer sur un seul fichier, voir sur ce patient, voir sur ce sample.
Dans ce cas, il faut reouvrir le sample différemment. Mais on pourrait déjà envisager une alternative en cachant d'un coup l'ensemble des autres samples du reads. Dans ce cas, on pourrait aussi cacher les clones d'autres samples (peut-être difficile).
On pourrait aussi imaginer un shortcut pour cacher d'un coup tous ces samples, un peu comme pour les locus.
Enfin, dernière possibilité, ouvrir dans un nouvel onglet le sample en solo. Mais dans ce cas comment gérer les sauvegardes ... pas simple de mon point de vue.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3691Se passer de web2py : py4web, autres ?2023-02-08T12:21:02+01:00Mathieu GiraudSe passer de web2py : py4web, autres ?Discuté ce matin. Je pensais qu'il y avait déjà une issue sur ce sujet.
Faut-il à terme abandonner web2py (mise à jour #3751, python3 #1345) pour autre chose ? flask ou autre ? node.js ?
Mais quels avantages y aurait-il à changer ?
P...Discuté ce matin. Je pensais qu'il y avait déjà une issue sur ce sujet.
Faut-il à terme abandonner web2py (mise à jour #3751, python3 #1345) pour autre chose ? flask ou autre ? node.js ?
Mais quels avantages y aurait-il à changer ?
Probalblement ~"wont\-fix" pour l'instant... et pas avant 2020 en tout cas !
cc @flothoni @mikael\-smarc duezmarc duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/2771Le découpage des méthodes "update" est-il judicieux ?2017-11-08T09:47:11+01:00Ryan HerbertLe découpage des méthodes "update" est-il judicieux ?Les vues JS ont plusieurs méthodes de mise à jour:
- `update`
- `updateElem`
- `updateStyle`
- `updateElemStyle`
Ce découpage peut avoir beaucoup de sens pour optimiser l'application, et réduire le nombre d'opérations inutiles. Comm...Les vues JS ont plusieurs méthodes de mise à jour:
- `update`
- `updateElem`
- `updateStyle`
- `updateElemStyle`
Ce découpage peut avoir beaucoup de sens pour optimiser l'application, et réduire le nombre d'opérations inutiles. Comme par exemple, la sélection d'un clone n'affecte que son esthétique, donc on applique `updateElemStyle` pour indiquer aux vues de modifier le style du clone sélectionné.
En revanche, dans certaines situations, celà peut poser des problèmes. Je pense notamment à url.js, qui a besoin de connaître les changements de sélection de clones, ainsi que d'autres changements non-cosmetiques. Appliquer le même paradigme de `update` et `updateElemStyle`... pose un soucis de duplication des tâches. D'une part les deux méthodes seront les mêmes, mais appliquées à différents types de paramètres, et d'autre part on se retrouve avec une duplication de URL.pushState (problème similaire à #2438 ).https://gitlab.inria.fr/vidjil/vidjil/-/issues/2492mutliple_scatterplot : id des clones dans le dom2021-11-23T16:44:58+01:00Mathieu Giraudmutliple_scatterplot : id des clones dans le domDiscussion avec @heto et @RyanHerb : un des soucis vu par les tests fonctionnels (voir en particulier `clone_in_scatterplot` dans les tests) est qu'on va avoir plusieurs objets avec le même id type `circle45`. Ce n'est pas bien, des effe...Discussion avec @heto et @RyanHerb : un des soucis vu par les tests fonctionnels (voir en particulier `clone_in_scatterplot` dans les tests) est qu'on va avoir plusieurs objets avec le même id type `circle45`. Ce n'est pas bien, des effets bizarres peuvent survenir.
* Créer des ids différents ? `0circle45` ? Demande d'avoir un identifiant par `sp`.
* Utiliser des classes au lieu des ids ? Mais souci quand on clique dessus, est-on capable de savoir où on est ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/2175Liste et segmenteur : affichage flexible d'axes2017-05-11T13:27:32+02:00Mathieu GiraudListe et segmenteur : affichage flexible d'axesOn en a déjà parlé plusieurs fois, mais on vient de se rendre compte avec @RyanHerb que cela pourrait être vraiment très général.
On souhaiterait pouvoir afficher n'importe quel axe dans la liste ou le segmenteur. Pour l'instant, à côté...On en a déjà parlé plusieurs fois, mais on vient de se rendre compte avec @RyanHerb que cela pourrait être vraiment très général.
On souhaiterait pouvoir afficher n'importe quel axe dans la liste ou le segmenteur. Pour l'instant, à côté du nom du clone, on affiche la taille, le tag, et éventuellement d'autres choses dans le segmenteur (notamment la productivité). On pourrait avoir des listes pour choisir les axes à afficher (et certians axes ont des affichages / contrôles particuliers, comme les étoiles de tag.
En lien avec #1763 et #2174.
cc @mikael-s @flothonihttps://gitlab.inria.fr/vidjil/vidjil/-/issues/1950Trouver une autre méthode de scheduling, indépendante de web2py2022-06-20T11:59:42+02:00Vidjil TeamTrouver une autre méthode de scheduling, indépendante de web2py(Discuté lors de la Rando 2016)
Un scheduler idéal devrait pouvoir avoir :
1) des priorités fines (petits jobs passent devant gros jobs) (et aussi users Platinium :-)
2) une suspension de tâches
3) une assignation fine de certains (gr...(Discuté lors de la Rando 2016)
Un scheduler idéal devrait pouvoir avoir :
1) des priorités fines (petits jobs passent devant gros jobs) (et aussi users Platinium :-)
2) une suspension de tâches
3) une assignation fine de certains (groupes de) workers à certaines tâches
2) ou 3) permettrait de lancer des choses annexes et rapides (type FineSegmenter ou compare patients ou ...) même si des gros Vidjil (ou autres) tournent
Enfin, penser tout cela dans le cadre d'un "noeud de calcul", possiblement indépendant du serveur web. Le serveur de calcul ne reçoit que des lignes de commande à exécuter et à accès aux fichiers nécessaires par un montage.
Rien d'urgent, à réfléchir posément dans les prochains mois.
***
Task spooler: http://vicerveza.homeunix.net/~viric/soft/ts/ présente les fonctionnalités majeures que nous cherchons (tâches interdépendantes, changement d'ordre dans la file, etc), mais n'a pas d'API pour s'en servir en réseau.
***
@RyanHerb @Duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/1735KmerSegmenter++ juste avant le FineSegmenter2018-02-23T09:35:28+01:00Vidjil TeamKmerSegmenter++ juste avant le FineSegmenterIdée de Marc lors de l'audio du 13 novembre, faisant écho à des trucs dont on avait parlé il y a un certain temps.
Faire un KmerSegmenter++ (ou MidSegmenter, ou ...) dont le but est d'identifier le V ou J (ou au moins de restreindre le ...Idée de Marc lors de l'audio du 13 novembre, faisant écho à des trucs dont on avait parlé il y a un certain temps.
Faire un KmerSegmenter++ (ou MidSegmenter, ou ...) dont le but est d'identifier le V ou J (ou au moins de restreindre le choix à quelques V/J, ou au moins les V), pour alléger le FineSegmenter.
Ce Segmenter serait lancé juste avant le FineSegmenter sur les représentatives (On n'a pas à alourdir le KmerSegmenter par défaut).
Voir aussi les commentaires de "accélérer le FineSegmenter"
***
Ah si seulement le AffectAnalyser était templaté pour pouvoir gérer ça simplement.
Oh wait…
***
Au passage, il est confirmé que -c germlines lance un Kmer avant un Fine, pour ne pas avoir à tester toutes les germlines (vidjil.cpp:1518).
Par contre, pas de Kmer relancé pour l'instant avant le Fine sur les représentatives, mais je pense que le faire serait négligeable en temps.
***
@magiraud @mikael-s