Closed schwobr closed 3 years ago
Je vais merge la branche sur laquelle je bossais d'abord ensuite je mergerai celle-là en gérant les conflits quand t'auras fini
Ok attends un peu avant de merge parce qu'à chaque fois que je corrige ça a l'air de créer un nouveau bug. Là je suis assez sûr de moi mais j'ai un script d'extraction qui tourne. S'il marche bien on pourra merge.
Update : ça a l'air de marcher. Bon par contre c'est en concurrence directe avec tes modifs donc faudra qu'on choisisse.
Yes je m'en doutais, c'est pour ça que j'ai voulu bien les prendre séquentiellement, mais on va regarder attentivement les modifs
En gros on résout un peu le même problème mais de manières différentes.
dsr = slide.level_downsamples[level_preview]
parce que c'est infiniment plus propre que 2 ** level_preview
. Mais j'aime bien la sécurité qu'apporte startx = min(x, image.shape[1] - 1)
au cas où la query serait n'importe quoi.psize
dans regular_grid
me paraît pertinent et bien implémenté, je pense qu'on peut le mettre comme tu l'as fait c'est super.Si ça te va, je peux faire la gestion du conflit pour pouvoir merger.
Tout ça me va. Au passage le fait de passer par dsr = slide.level_downsamples[level_preview]
est même hyper important parce que par exemple sur les images svs sur lesquels je bosse pour MYC les niveaux de downsample sont 1, 4, 16, 32 donc c'est pas du tout les puissance de 2 (en fait c'est même pas exactement c'est nombre, c'est genre 4.0036892, 16.000547, etc.).
Yes j'avais déjà observé ça aussi en bossant sur des svs de poumon, je pense que j'avais du faire des modifs dans ce sens dans pysliderois, mais je les ai pas retranscrites ici... Bref, c'est effectivement beaucoup plus safe 👍
2 correctifs principaux :
folder=
enfolders=
dans les appels deget_files
(erreur de typo)maxi
etmaxj
dansregular_grid
ne prend pas en compte le fait que les patchs font une taillepsize
et non pas une tailleinterval
. Ca ne provoque pas de bug tant qu'on n'utilise pas un niveau de verbose 2 (ou tant queinterval = psize
) carOpenSlide.read_region
autorise toutes les coordonnées et renvoie simplement du noir quand on sort de l'image. En revanche avec la verbose, la tentative d'export de la miniature échoue à cause de ça car il cherche à accéder à une coordonnée hors du tableaunumpy
de la miniature (vu que la limite droite du dernier patch peut dépasser de l'image avec l'ancienne formule).EDIT: Correctif supplémentaire qui faisait que la génération de miniature continuait de bugger malgré les correctifs: dans
preview_from_queries
, la grille est colorée à partir des coordonnées(x, y)
et de leur taille(dx, dy)
à l'échelle de la miniature. Le problème de l'ancienne version est qu'elle sous-entendait que la dernière coordonnée d'un patch était(x+dx, y+dy)
alors que c'est(x+dx-1, y+dy-1)
ce qui posait problème dans certains cas.