Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Emit flat/to_polars directly from the CSR store

Cerrado
#968 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
68/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
data

Línea de trabajo

Start with LinearExpression.flat and to_polars in linopy/expressions.py, then read csr_to_term_arrays in linopy/csr.py and CSRConstraint.to_polars in linopy/constraints.py as the stated precedent. Trace Grid.indexer, strides, and indexes to assemble the coordinate columns. Done means CSR-backed expressions emit the compact canonical rows directly and flat shares that path without dense expansion.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement performance sparse

[!NOTE]
The following content was generated by AI.

Describe the feature you'd like to see

Emit flat and to_polars directly from the CSR store, without building the dense rectangle first. Child of #756.

LinearExpression.flat (linopy/expressions.py:2612) and to_polars (2693) both read self.data, expand to the padded coord_dims x _term rectangle, convert to a long frame and then mask the padding straight back out. For a CSR-backed expression that is a round trip through exactly the representation the long format is trying to reach.

This matters twice: it is the export boundary, and it is the natural way to inspect a sparse expression, so it currently doubles as a densification trap.

Implementation ideas

csr_to_term_arrays (linopy/csr.py:506-532) already produces the flat term arrays. The work is to assemble the coordinate columns from Grid (indexer, strides, indexes) and emit the polars frame directly, then have flat share that path.

CSRConstraint.to_polars (linopy/constraints.py:1271) is the existing precedent on the constraint side and should be the model for the expression side.

Note that a CSR-backed result is compact canonical form, so the emitted row count legitimately differs from the dense path where explicit zeros were pruned. See #925.

Lenguaje dominante
Python
Estrellas
259
Forks
89
Merge medio
1 d 18 h
PR fusionados (30 d)
26

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de PyPSA/linopy

Todos los issues de PyPSA/linopy

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.