API design question: default value of `index` for ndmeasure functions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- api, computer-vision
Línea de trabajo
Comienza leyendo las funciones de dask_image.ndmeasure y el helper _norm_input_labels_index mostrado en la issue; después, compara cómo se comportan labels e index=None en las funciones afectadas. La tarea estará terminada cuando se haya alcanzado un diseño de API acordado para los índices predeterminados frente al manejo de máscaras, y el comportamiento coherente esté documentado y verificado mediante las pruebas relevantes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
This is a question about the API design for label indices in dask_image.ndmeasure functions.
Where labels is given but index is None, the label array is overwritten and becomes a mask image. This was not very intuitive for me, and means the behaviour of the ndmeasure functions is inconsistent. In some cases (index=None) you get an aggregate value, and in others you get values for each individual label (even if there are multiple indices).
I think there's an argument to be made that if labels is given and index=None the default value should be the range of all non-zero labels (eg: [1, 2, 3, ..., n]). This would mean (a) no nasty surprise aggregations, and (b) you wouldn't need to near-constantly write index=da.arange(da.max(labels)) or revert to the slightly clunkier label_comprehension() syntax (I can never remember the six input arguments).
Questions
- Are the majority of use cases different than what I imagine here? If what I expect to be the most common use scenario is actually pretty uncommon, I may need to rethink my opinion.
- What is your opinion on replacing:
def _norm_input_labels_index(input, labels=None, index=None):
...
elif index is None:
labels = (labels > 0).astype(int)
index = dask.array.ones(tuple(), dtype=int, chunks=tuple())
with this instead:
def _norm_input_labels_index(input, labels=None, index=None):
...
elif index is None:
index = dask.array.arange(dask.array.max(labels) + 1)[1:]
and making a separate mask() convenience function available.
In my view it's much clearer that area(input, mask(labels)) is expected to return an aggregate value, compared to area(input, labels, index=None).
- Lenguaje dominante
- Python
- Estrellas
- 226
- Forks
- 56
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dask/dask-image
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
dask/dask-image#431 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
dask/dask-image#426 · 5 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
dask/dask-image#419 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
dask/dask-image#414 · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 62/100
dask/dask-image#413 · 2 comentarios ·
Todos los issues de dask/dask-image
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
BasedHardware/omi#20271 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 92/100
openai/openai-cookbook#3153 ·
Los mantenedores suelen responder en 1 día
-
cvss-severity:high devguard l3montree-cybersecurity/devguard/devguard pkg:golang/github.com/l3montree-dev/devguard risk:low state:open
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
l3montree-dev/devguard#3146 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
bug confirmed issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
open-webui/open-webui#31849 · 2 comentarios ·
Los mantenedores suelen responder en 1 día