Add array_transform to SolutionInfo to preserve compute-time transducer pose
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
Línea de trabajo
Empieza por openlifu.db.session.SolutionInfo e inspecciona cómo Session.from_dict decodifica las entradas de solutions. Actualiza tests/test_database.py para el campo opcional array_transform, incluida la decodificación de dict y el comportamiento heredado de None; se considera terminado cuando el valor sobrevive a los viajes de ida y vuelta a la base de datos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Add an optional array_transform: ArrayTransform | None field to
openlifu.db.session.SolutionInfo capturing the transducer array-to-volume
transform matrix that was used when the corresponding Solution was
computed.
Motivation
Downstream (SlicerOpenLIFU) currently renders a solution's PNP / intensity
volumes by parenting them under the transducer's transform node, then snapping
the transducer to whichever virtual-fit or transducer-tracking result is
currently approved. This means:
- If the currently-approved VF / TT changes between compute time and display
time, the PNP moves to the new pose rather than staying where it was
computed. - For a pre-solution (computed off a VF result), the VF approval may later
be revoked; there is then no way to display the solution at its original
pose because no transform survives.
The fix is to persist the exact matrix used at compute time on the
SolutionInfo provenance record. Consumers snap the transducer to that
matrix on display, so the PNP is invariant under later approval churn.
Details
- New field
SolutionInfo.array_transform: ArrayTransform | None(default
Nonefor legacy round-trips). __post_init__accepts a dict transparently soSession.from_dict
decodingsolutionsentries produces the correct type.- Round-trip tests added in
tests/test_database.py.
Downstream
Tracked in SlicerOpenLIFU#622: "Pre-Solution PNP overlay renders at wrong
position when navigating to Sonication Planner". That issue's fix consumes
this new field.
- Lenguaje dominante
- Python
- Estrellas
- 29
- Forks
- 20
- Merge medio
- 4 h 31 min
- PR fusionados (30 d)
- 6
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 OpenwaterHealth/openlifu-python
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Save Focal Gain LUT into a data file (json, csv, etc.) to make the source code file shorter.Posiblemente ocupada @HussainAther la tomó hace 88 días. Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
OpenwaterHealth/openlifu-python#448 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Reconstruction quality is inconsistent +poor across runs on identical input + very slow processingQuizá libre de nuevo @stahir715 la tomó hace 66 días y no hay ningún pull request abierto. Abierto
OpenwaterHealth/openlifu-python#496 · 7 comentarios · 2 asignados ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
OpenwaterHealth/openlifu-python#493 · 1 comentario ·
Todos los issues de OpenwaterHealth/openlifu-python
Issues similares
-
docs: the dev-setup table and AGENTS.md name the reviewed_by guard that CI's Changelog job runsAbiertoarea: tools documentation good first issue ready for a contributor
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
eyalgolan/statecraft-israel#873 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Add cover art to song rowsAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 5 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día