Metadata-Version: 2.4
Name: siemensfile
Version: 0.1.32
Summary: Paquete para leer archivos .dat de Siemens y realizar reconstrucciones de imágenes.
Home-page: https://github.com/cenarius1985/SIEMENSFile
Author: Fernando Jose Ramirez
Author-email: fernando.ramirez.sarmiento@gmail.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12.4
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: pandas
Requires-Dist: matplotlib
Requires-Dist: mri-nufft
Requires-Dist: pydicom
Requires-Dist: openpyxl
Requires-Dist: h5py
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# SIEMENSFile

**SIEMENSFile** es un paquete para previsualizar, leer y procesar archivos `.dat` de Siemens y realizar reconstrucciones de imágenes de resonancia magnética (MRI). Extrae `rawdata` y `metadata` y reconstruye imágenes mediante IFFT centrada. La reconstrucción cartesiana soporta adquisiciones **2D multi-slice, 2D multi-stack (p. ej. localizer sag+cor+tra) y 3D (p. ej. MPRAGE)**, con manejo de Partial Fourier. La reconstrucción no cartesiana (radial/espiral con NUFFT) está planificada.

## Instalación

Opción recomendada con conda:

```bash
conda create -n siemensfile python=3.12 -y --override-channels -c conda-forge
conda activate siemensfile
pip install -r requirements.txt
pip install .
```

O desde PyPI (versión básica):

```bash
pip install siemensfile
```

## Uso

```python
from siemensfile import siemensfile

[metadata, kspace] = siemensfile(r'tests/datatest/siemens_file_test_cartesian_sample.dat', reconstruccion="Cartesiana")
kspace.shape  # [line, channel, column, slice]
```

`reconstruccion="NoCartesiana"` aún no está implementada (lanza `NotImplementedError`).

## Resultados

Los resultados se guardan en una carpeta `output` junto al archivo `.dat` (se limpia en cada ejecución):

- `{nombre}_kspace.png` — vista del espacio k (escala logarítmica).
- `{nombre}_reconstruction.png` — mosaico con la reconstrucción de todos los slices.
- `{nombre}_slice_NNN.dcm` — reconstrucción en DICOM MR (`MRImageStorage`, un archivo por slice).
- `{nombre}_metadata.json` — metadatos del protocolo (headers twix aplanados).

## Qué maneja la reconstrucción cartesiana

- **3D (particiones)**: las particiones (`cPar`) se tratan como slices individuales; cada volumen 3D produce N imágenes axiales (o de la orientación del slab).
- **Multi-stack**: stacks con contadores de slice repetidos se separan por posición espacial y contadores del header.
- **Partial Fourier 6/8 (banda inferior)**: las líneas se mapean a la matriz completa usando `CenterLin`; las líneas no adquiridas quedan en cero (reconstrucción zero-filled).
- **Partial Fourier 1/2 (entrelazado)**: las líneas impares se interpolan desde las pares para eliminar el fantasma de Nyquist.
- **Centrado de lectura**: el eco (DC) se centra según `CenterCol` mediante roll circular.
- **Combinación de canales**: RMS (root-sum-of-squares) sobre los coils.

Limitaciones conocidas (ver documentación): sin corrección de intensidad por coil (las imágenes sum-of-squares muestran señal superficial más brillante que la referencia Siemens), sin homodyne para PF 6/8, sin soporte GRAPPA/R o no cartesiano.

## Tests

```bash
pytest tests/
```

## Créditos y reconocimientos

Este proyecto utiliza como base el paquete [twixtools](https://github.com/pehses/twixtools) de Philipp Ehses (incluido en `src/twixtools`), que provee la lectura de archivos `.dat` de Siemens. Este proyecto expande sus capacidades con reconstrucciones de imágenes.
