midas-nf-process-images
Differentiable PyTorch port of NF_HEDM/src/ProcessImagesCombined.c for CPU, CUDA, and MPS.
Notebooks
Worked-example Jupyter notebooks live in notebooks/. They are not shipped with pip install — get them by cloning the MIDAS repository.
Pipeline
For one layer of a near-field HEDM scan:
- Load
NrFilesPerLayerraw TIFF frames into a[N, Z, Y]tensor. - Temporal median across frames → per-pixel background
[Z, Y]. - Per-frame:
- Subtract median +
BlanketSubtraction, clamp at 0. - Spatial median (3x3 or 5x5).
- LoG response at one or more scales.
- Threshold and label connected components → integer spot labels (detached).
- Sigmoid surrogate → continuous spot-probability map (autograd path).
- Subtract median +
- Accumulate spot pixels into a bit-packed
SpotsInfo.binmmap (drop-in compatible withFitOrientationOMP/simulateNF).
Phases 1, 2, and 3 (filtered, log_response, soft spot probability) are differentiable
end-to-end. Connected components and the binary SpotsInfo.bin output are computed on
detached tensors and do not participate in autograd.
Quickstart
from midas_nf_process_images import ProcessParams, ProcessImagesPipeline
params = ProcessParams.from_paramfile("ps.txt")
pipe = ProcessImagesPipeline(params, device="cuda") # or "mps", "cpu"
spots = pipe.process_layer(layer_nr=1)
spots.write("/path/to/SpotsInfo.bin")
# Or all layers in one call:
spots = pipe.process_all(layers=range(1, params.n_distances + 1))
CLI
midas-nf-process-images <ParameterFile> <LayerNr> [--device cuda] [--dtype fp32] [--n-cpus 8]
Behaves like the C ProcessImagesCombined executable.
Backend selection
Same contract as midas-transforms:
- Default device:
cuda->mps->cpu. - Default dtype:
float64on CPU,float32on CUDA/MPS. - Override with
device=/dtype=kwargs, or env varsMIDAS_NF_PROCESS_IMAGES_DEVICE/MIDAS_NF_PROCESS_IMAGES_DTYPE.
Differentiability
The end-to-end pipeline produces three tensors:
filtered: median-subtracted, spatial-median-filtered image (autograd).log_response: LoG convolution output (autograd).spot_prob: soft, continuous spot-probability map viasigmoid(L / temperature)(autograd).
Plus one detached output:
labels: integer connected-component IDs from hard-thresholded LoG (no gradient).
Optimization through the discrete spot mask uses the soft spot_prob surrogate.
Metadata
Release files for midas-nf-preprocess 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| midas_nf_preprocess-0.8.0.tar.gz | 107.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| midas_nf_preprocess-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 233.9 kB
Release files / midas_nf_preprocess-0.8.0.tar.gz
| Download URL | midas_nf_preprocess-0.8.0.tar.gz |
|---|---|
| Size | 107.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
368af2ad9f2979f00d2f9be4f358a0aaae2a7654cf67efeed9480acf125e7da4
|
|
BLAKE2b-256 checksum How to use checksums |
0eeedcca467330c36c30325c47433139163b067e23338c4ab8e617e9a8aec14f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / midas_nf_preprocess-0.8.0-py3-none-any.whl
| Download URL | midas_nf_preprocess-0.8.0-py3-none-any.whl |
|---|---|
| Size | 126.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9f6620e5660cdb1d61f46b213c4fcb08ea662188e5d4417ecf68ea63b9ddb138
|
|
BLAKE2b-256 checksum How to use checksums |
c0002a838eb483198a07f6ba198ca86efbb0f777bf25e8fefa72caaa1ad5c84e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log