Open picheral opened 4 years ago
Ca me semble une bonne idée. Quel jeu d'images est erroné?
Une erreur connue est sur l'ESD qui devrait être calculé comme
ESD = 2 * sqrt(area / pi)
On pourrait recalculer cela pour tous les projets qui ont des champs area
et esd
. Quand c'est déjà juste on retrouvera la même valeur, quand c'est faux, ça corrigera. Ça ira plus vite que d'identifier précisément quels projets sont erronés.
Il faut le faire par projet cela dit parce que les champs area
et esd
ne sont pas toujours à la même position.
NB: le pb vient du fait que Java donc ZooProcess ne connait pas ^0.5
pour faire sqrt
.
@picheral : d'autres champs dérivés impactés par ce pb?
Pour les instruments Zooscan, UVP5, FlowCam et Generic :
esd = 2*(sqrt(area/PI));
centroids = sqrt(pow(xm-x,2)+ pow(ym-y,2));
perimareaexc = perim/(sqrt(area_exc));
feretareaexc = feret/(sqrt(area_exc));
circexc = (4*PI*area_exc)/(pow(perim,2));
cdexc = (1/(sqrt(area_exc))) * sqrt(pow(xm-x,2)+pow(ym-y,2));
Considérant qu'on stocke les flottants en double précision, ils prennent 8 octets chacun, donc pour 100M de features on tape dans le giga octets pour chaque colonne. A considérer: stocker les formules et les données de départ au lieu de résultats.
Compliqué à mettre en oeuvre car il faudrait alors un traitement spécifique pour les données issues de Zooprocess seulement ! Je propose de refaire le calcul comme "demandé" et donc sans réduire la taille de la base. Il y a pour moi d'autres "niches" pour diminuer les tailles des bases.
Ma foi. Issue à finir de spécifier.
Il s'agit d'une modif one shot, à faire directement sur la base.
zooscan
, flowcam
, uvp5
et generic
mappingobj
: area
, area_exc
, perim
, xm
, ym
, feret
mappingobj
@picheral : ça laisse quand même un pb: si les gens réimportent des .tsv à partir d'anciens projets générés avec une version de zooprocess contenant encore l'erreur, ça va écraser cette correction. Je ne sais pas combien de temps la version problématique de zooprocess a été diffusée et à quel point c'est prévalent.
Les utilisateurs ne font malheureusement pas les MAJ de Zooprocess. Cela risque donc de perdurer. Il faut donc prévoir de les recalculer à l'import ????
Les utilisateurs ne font malheureusement pas les MAJ de Zooprocess. Cela risque donc de perdurer. Il faut donc prévoir de les recalculer à l'import ????
Dans ce cas, je suis avec @grololo06 : il ne faut même pas les entrer dans la base mais les définir dynamiquement comme un calcul à partir des features existantes. Ça signifie implémenter une fonction qui permet la spécification de fonctions de transformation à partir des champs dans le mapping. Je pense que cela doit être une fonction au niveau projet, copiable d'un projet à l'autre pour éviter d'avoir à taper n fois la même chose.
Mais j'ai des doutes sur le rapport coût (importants!) / bénéfice :
areaperim
, areaferet
, etc.) mais est-ce que certains s'en servent vraiment (comprendre ce que ça représente/capture n'est pas évident)?Donc je serai pour:
OK
Même si elles sont fausses, les data ne nous appartiennent pas donc il est éthiquement impossible de modifier sous les pieds des utilisateurs des données. On peut offrir une fonction aux managers de projets (similaire à Fix Category Issues). A discuter.
Je vote pour 👍
Il faudrait le faire une fois au moins sur une liste de projest sélectionnés (A discuter un jeudi).
faire la correction une fois; garder le code dans un coin pour éventuellement la relancer à la main de temps en temps mais ne pas en faire une feature d'EcoTaxa
hardcoder le calcul de features pertinentes écologiquement (Compute ecologically meaningful measurements #455) et laisser le reste au choix/à la responsabilité de l'utilisateur.
Pour des questions de volumes de données, il faudra rajouter la fonction dans le back-end. Donc, ce sera un point d'entrée dans l'API, donc on pourra faire une boucle avec nos projets.
Certaines features ont été calculées avec un code erronée et le sont maintenant de façon correcte. Il faudrait homogénéiser sans réimporter tous les TSV recalculés.