Shared sparse one-hot (indicator) helper for squidpy and scanpy
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
Línea de trabajo
Start with scanpy/get/_aggregated.py and squidpy/gr/_nhood.py, then review the proposed fast_array_utils.conv entry point and its sparse extra. Confirm the shared helper preserves missing labels, unused categories, mask handling, float64 output, and the stated matrix layouts; done means both callers use it without changing their current behavior.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
prettified with ai, basically saying we have two different functions we can unify here. low prio but good to document.
scanpy (sparse_indicator in scanpy/get/_aggregated.py) and squidpy (_onehot in squidpy/gr/_nhood.py) each keep a private helper that turns category codes into a sparse float64 indicator matrix, with a missing label (-1) giving no entry. They differ only in interface: scanpy takes a pd.Categorical and returns (n_categories, n_obs) as a coo_array with an optional mask, while squidpy takes a pd.Series and returns a (n_obs, n_categories) csr_matrix.
Proposal for fast_array_utils.conv (needs the sparse extra; takes codes since fast-array-utils doesn't depend on pandas):
def sparse_indicator(
codes: NDArray[np.integer], n_categories: int, *, mask: NDArray[np.bool] | None = None
) -> coo_array:
keep = codes >= 0 if mask is None else (codes >= 0) & mask
obs = np.flatnonzero(keep)
return coo_array((np.ones(obs.size), (obs, codes[keep])), shape=(codes.size, n_categories))
(n_obs, n_categories), the usual one-hot layout; scanpy takes.T(about 3 ms at 5M observations).- float64, as both callers use today.
- Same cost as both copies today: squidpy converts the result to CSR, as it does now.
checked with missing labels, unused categories and mask.
as discussed in squidpy/#1285
- Lenguaje dominante
- Python
- Estrellas
- 15
- Forks
- 5
- Merge medio
- 14 h 52 min
- PR fusionados (30 d)
- 13
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 scverse/fast-array-utils
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 74/100
scverse/fast-array-utils#165 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
scverse/fast-array-utils#213 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
scverse/fast-array-utils#179 · 23 comentarios ·
Los mantenedores suelen responder en 1 día
-
type: numpy/scipy
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
scverse/fast-array-utils#128 ·
Los mantenedores suelen responder en 1 día
-
good first issue
Dificultad 3/5 Medio día Aptitud para principiantes 38/100
scverse/fast-array-utils#100 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de scverse/fast-array-utils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
qgis/QGIS-Plugins-Website#459 ·
-
bug severity:medium
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
bot-found bug priority: P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
madenvel/KalinkaPlayer#179 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ls1intum/edutelligence#1098 ·
Los mantenedores suelen responder en 1 día