Metadata-Version: 2.5
Name: fxd-reader
Version: 0.1.1
Summary: Reader for FXD fluoroscopy raw image sequences.
Project-URL: Homepage, https://github.com/hrithik/fxd-reader
Project-URL: Issues, https://github.com/hrithik/fxd-reader/issues
Author: hrithik
License-Expression: MIT
License-File: LICENSE
Keywords: fluoroscopy,fxd,image-sequence,medical-imaging,x-ray
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
Requires-Python: >=3.9
Requires-Dist: numpy>=1.20
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == 'dev'
Requires-Dist: pytest>=7; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Description-Content-Type: text/markdown

# fxd-reader

Reader for **FXD** fluoroscopy raw image sequences.

The FXD format is a fixed 128-byte header (plus a variable-length command
string) followed by raw pixel data for one or more frames. This package
parses the header and returns pixel data as a NumPy array.

Format spec reverse-engineered from the `FXD.java` ImageJ plugin.

## Install

```bash
pip install fxd-reader
```

## Usage

```python
from fxd_reader import read_fxd, read_header

# Metadata only
header = read_header("scan.fxd")
print(header)  # FXDHeader(2480x1920, 219 frames, dtype=uint16, LE, ...)

# All frames -> (N, H, W) uint16 array
header, frames = read_fxd("scan.fxd")
print(frames.shape, frames.dtype)

# Single frame -> (H, W)
header, frame0 = read_fxd("scan.fxd", frames=0)

# Slice or list of indices
header, first10 = read_fxd("scan.fxd", frames=slice(0, 10))
header, picked = read_fxd("scan.fxd", frames=[0, 5, 10, -1])
```

## Supported data types

| Code | dtype |
|------|-------|
| 0    | float32 |
| 1    | int16 |
| 2    | uint8 |
| 3 / 10 | int32 |
| 4    | uint16 |

Both little- and big-endian files are supported. Compressed FXD payloads
(`COMPR` flag) are not yet implemented.

## License

MIT.
