Skip to main content

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:

  1. Load NrFilesPerLayer raw TIFF frames into a [N, Z, Y] tensor.
  2. Temporal median across frames → per-pixel background [Z, Y].
  3. 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).
  4. Accumulate spot pixels into a bit-packed SpotsInfo.bin mmap (drop-in compatible with FitOrientationOMP / 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: float64 on CPU, float32 on CUDA/MPS.
  • Override with device= / dtype= kwargs, or env vars MIDAS_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 via sigmoid(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.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for midas-nf-preprocess 0.7.2
File Size Uploaded
midas_nf_preprocess-0.7.2.tar.gz 93.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for midas-nf-preprocess 0.7.2
File Interpreter ABI Platform
midas_nf_preprocess-0.7.2-py3-none-any.whl Python 3 none any Details

Total release size: 205.8 kB

Release files / midas_nf_preprocess-0.7.2.tar.gz

Download URL midas_nf_preprocess-0.7.2.tar.gz
Size 93.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ee70042308bfa08ba04afe7aa1fc4a4c601e323d99593795430d29f18778d4ce
BLAKE2b-256 checksum
How to use checksums
687232c1f98a1a6eb4f97363cc62cc5231c8e39c58e0174a7645c4084f0996ac
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 Aug 24, 2026.

Transparency log

Release files / midas_nf_preprocess-0.7.2-py3-none-any.whl

Download URL midas_nf_preprocess-0.7.2-py3-none-any.whl
Size 112.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aa110d3cefe69055f5b64836e83b19acb8975602016355310b53e62c917efc54
BLAKE2b-256 checksum
How to use checksums
209945e15dc8beed0f901b632dc8558f39891fd3b5e4a58e85b08a956dbc3641
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 Aug 24, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.0

2 release files

This release

0.7.2 This release

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page