Skip to main content

NIfTI arithmetic utilities

Project description

niimath

Build status

About

It is said that imitation is the sincerest form of flattery. This project emulates the popular fslmaths tool. fslmaths is a general image calculator and is not only one of the foundational tools for FSL's brain imaging pipelines (such as FEAT), but has also been widely adopted by many tools. This popularity suggests that it fulfills an important niche. While scientists are often encouraged to discover novel solutions, it sometimes seems that replication is undervalued. Here are some specific reasons for creating this tool:

  1. While fslmaths is provided without charge, it is not open source. This limits its inclusion in other projects, in particular for commercial exploitation.
  2. Using an open source license allows niimath to build with open source libraries that the FSL team can not use. Specifically, an accelerated zlib (zlib-ng, the release baseline) provides dramatically faster performance than the public domain library used by fslmaths. n.b. We previously helped update the CloudFlare zlib fork that allows recent FSL releases to use an accelerated library, improving the speed for all FSL tools; niimath's releases now default to zlib-ng, which is also fast on arm64 and correct on Windows.
  3. Minimal dependencies allow easy distribution, compilation and development. For example, it can be compiled for MacOS, Linux and Windows (fsl can not target Windows).
  4. Designed from ground up to optionally use parallel processing (OpenMP and CloudFlare-enhanced pigz).
  5. Most programs are developed organically, with new features added as need arises. Cloning an existing tool provides a full specification, which can lead to optimization. niimath uses explicit single and double precision pipelines that allow the compiler to better use advanced instructions (every x86_64 CPU provides SSE, but high level code has trouble optimizing these routines). The result is that modern compilers are able to create operations that are limited by memory bandwidth, obviating the need for hand tuning the code.
  6. Developing a robust regression testing dataset has allowed us to discover a few edge cases where fslmaths provides anomalous or unexpected answers (see below). Therefore, this can benefit the popular tool that is being cloned.
  7. While the code is completely reverse engineered, the FSL team has been gracious to allow us to copy their error messages and help information. This allows true plug in compatibility. They have also provided pseudo code for poorly documented routines. This will allow the community to better understand the actual algorithms.
  8. This project provides an open-source foundation to introduce new features that fill gaps with the current FSL tools (e.g. unsharp, sobel, resize functions). For future releases, Bob Cox has graciously provided permission to use code from AFNI's 3dTshift and 3dBandpass tools that provide performance unavailable within FSL. Including them in this project ensures they work in a familiar manner to other FSL tools (and leverage the same environment variables).

The Reason to use fslmaths instead of niimath:

  1. niimath is new and largely untested software. There may be unknown corner cases where produces poor results. fslmaths has been used for years and therefore has been battle tested. In the few instances where fslmaths generates results that bear no resemblance to its own documentation (as described below), one could argue it is the correct result (with comparison to itself). However, many tools may have been developed to assume this loss of high frequency signal and these tools may not perform well when provided with the result specified in the documentation.

Installation

You can get niimath using several methods:

  • (Recommended) Download latest compiled release from Github release web page.
  • (Recommended) Download latest compiled release from PyPI:
  • pip install niimath
  • (Recommended) You can also download from the command line for Linux, MacOS and Windows:
  • curl -fLO https://github.com/rordenlab/niimath/releases/latest/download/niimath_lnx.zip
  • curl -fLO https://github.com/rordenlab/niimath/releases/latest/download/niimath_macos.zip
  • curl -fLO https://github.com/rordenlab/niimath/releases/latest/download/niimath_win.zip
  • (Developers) Download the source code from GitHub, the next section describes how to build the software.

Compilation

CMake (recommended)

The easiest way to build niimath on a Unix computer is to use cmake. OpenMP is enabled by default (used by affine registration and optionally by core operations):

git clone https://github.com/rordenlab/niimath.git
cd niimath; mkdir build; cd build; cmake ..
make

On macOS, OpenMP requires Homebrew's libomp: brew install libomp. To disable OpenMP, use cmake -DUSE_OPENMP=OFF ... Optional zstd compression support is auto-detected; install with brew install zstd (macOS) or apt install libzstd-dev (Linux).

Likewise, if you are compiling on Windows using cmake:

git clone https://github.com/rordenlab/niimath.git
cd niimath & mkdir build & cd build & cmake ..
cmake --build .

Makefile (alternative)

You can compile the software by running the terminal command make from the project's src folder. This works with both Clang/LLVM and gcc on Linux and macOS:

git clone https://github.com/rordenlab/niimath.git
cd niimath/src
make

The default build includes OpenMP for all operations. On macOS this requires brew install libomp. To disable OpenMP, use OMP=0 make. Other Makefile options:

OMP=0 make             # Disable OpenMP
# zlib: CMake release builds default to zlib-ng (ZLIB_IMPLEMENTATION); plain make uses system -lz
make debug             # Debug build (-g, no optimization)
make ubsan             # Lightweight undefined-behavior checks (OpenMP-safe on macOS)
make sanitize          # AddressSanitizer build
AL=0 make              # Disable allineate registration
ZSTD=0 make            # Disable zstd compression support
make wasm              # Emscripten/WebAssembly target
make wasm-wasi         # Experimental zlib-free WASI compute backend (needs Zig)
make wasm-emcc-core    # Feature-matched zlib-free Emscripten build (WASI benchmark baseline)

You can also compile this project to Web Assembly so it can be embedded in a web page, as shown in the live demo.

Optional GPL -spm_coreg module

The -spm_coreg (SPM rigid-body coregistration) and -spm_deface (SPM-based defacing) commands live in the separate GPL-2 niimath_gpl submodule and are OFF by default, so ordinary builds stay BSD-2-Clause. To build them, initialize the submodule and pass GPL=1 (Makefile) or -DENABLE_GPL=ON (CMake). Run both commands from the repository root so the paths resolve:

git submodule update --init src/GPL    # or clone with --recurse-submodules
make -C src GPL=1

A binary built this way is a GPL-2 combined work (its version string ends in GPL); without the module -spm_coreg/-spm_deface report a clear error and the build stays BSD-2 ( BSD). The GPL module computes only the rigid transform; niimath's BSD code applies it (reslicing and mask warping shared with -allineate/-deface).

When built with OpenMP, -spm_coreg/-spm_deface parallelize a single registration (the per-evaluation histogram and smoothing); results agree across thread counts to within the SPM golden tolerance (the histogram reduction sums in a thread-count-dependent order, so it is not guaranteed bit-identical across different team sizes, though it is deterministic at a fixed thread count). Control threads with OMP_NUM_THREADS=N or -p N (place -p before -spm_coreg). For batch runs of many subjects, prefer one subject per process with OMP_NUM_THREADS=1 rather than threading each registration.

Windows (command line)

For Windows, using the cmake method described above is highly recommended. However, you can also compile the project directly from the command line (here without the -DHAVE_ZLIB directive, so gz files will not be supported):

cl /Feniimath niimath.c core.c tensor.c bwlabel.c bw.c core32.c core64.c fdr.c meshify.c MarchingCubes.c quadric.c base64.c radixsort.c unifize.c nifti_io.c -DNII2MESH

Linux universal binary

Simply running make in the src folder should compile niimath on Linux. However, the resulting executable will only work with specific versions of Linux. If you want to make a universal Linux release you can use holy-build-box. Be aware that this uses an old version of the gcc compiler (4.8.5), so the resulting performance may not be optimized for your system.

git clone https://github.com/rordenlab/niimath
sudo docker run -t -i --rm  -v `pwd`:/io ghcr.io/foobarwidget/holy-build-box-x64 /hbb_exe/activate-exec bash
cd /io/niimath/src
make
exit
sudo chown $(whoami) ./niimath/src/niimath

JavaScript/WebAssembly

To read the WASM specific README, please click here. The rest of this README is for the niimath CLI program.

Usage

niimath provides the same commands as fslmaths, so you can use it just as you would fslmaths. If you are brave, you can even rename it fslmaths and use it as a drop in replacement. You can also modify your environment variables to unleash advanced features:

  • Just like fslmaths, it uses your FSLOUTPUTTYPE Environment Variable to determine output file format. Unix users can specify export FSLOUTPUTTYPE=NIFTI_GZ, export FSLOUTPUTTYPE=NIFTI, or export FSLOUTPUTTYPE=NIFTI_ZST (zstd compressed, requires zstd support) from the command line or profile. Windows users can use set instead of export.
  • To turn on parallel processing and threading, you can either set the environment variable export AFNI_COMPRESSOR=PIGZ. If the environment variable AFNI_COMPRESSOR does not exist, or is set to any value other than PIGZ you will get single threaded compresson.

niimath has a few features not provided by fslmaths:

  • bandpass <hp> <lp> <tr>: Butterworth filter, highpass and lowpass in Hz,TR in seconds (zero-phase 2*2nd order filtfilt)
  • bptfm <hp> <lp> : Same as bptf but does not remove mean (emulates fslmaths < 5.0.7)
  • bwlabel <conn> : Connected component labelling for non-zero voxels (conn sets neighbors: 6, 18, 26)
  • ceil : round voxels upwards to the nearest integer
  • crop <tmin> <tsize> : remove volumes, starts with 0 not 1! Inputting -1 for a size will set it to the full range
  • dehaze <mode> : set dark voxels to zero (mode 1..5; higher yields more surviving voxels)
  • detrend : remove linear trend (and mean) from input
  • demean : remove average signal across volumes (requires 4D input)
  • edt : estimate Euler Distance Transform (distance field). Assumes isotropic input
  • floor : round voxels downwards to the nearest integer
  • mod : modulus fractional remainder - same as '-rem' but includes fractions
  • otsu <mode> : binarize image using Otsu''s method (mode 1..5; higher yields more bright voxels))
  • power <exponent> : raise the current image by following exponent
  • resize <X> <Y> <Z> <m> : grow (>1) or shrink (<1) image. Method (0=nearest,1=linear,2=spline,3=Lanczos,4=Mitchell)
  • robustfov [mm] : crop to a robust field of view (default 170mm) from the top of the head down, removing lower head/neck (emulates FSL robustfov); adjusts dim and sform/qform
  • round : round voxels to the nearest integer
  • sobel : fast edge detection
  • sobel_binary : sobel creating binary edge
  • tensor_2lower : convert FSL style upper triangle image to NIfTI standard lower triangle order
  • tensor_2upper : convert NIfTI standard lower triangle image to FSL style upper triangle order
  • tensor_decomp_lower : as tensor_decomp except input stores lower diagonal (AFNI, ANTS, Camino convention)
  • trunc : truncates the decimal value from floating point value and returns integer value
  • unsharp <sigma> <scl> : edge enhancing unsharp mask (sigma in mm, not voxels; 1.0 is typical for amount (scl))
  • dog <sPos> <sNeg> : difference of gaussian with zero-crossing edges (positive and negative sigma mm)
  • dogr <sPos> <sNeg> : as dog, without zero-crossing (raw rather than binarized data)
  • dogx <sPos> <sNeg> : as dog, zero-crossing for 2D sagittal slices
  • dogy <sPos> <sNeg> : as dog, zero-crossing for 2D coronal slices
  • dogz <sPos> <sNeg> : as dog, zero-crossing for 2D axial slices
  • mesh : see separate section below
  • qform <code> : set qform code
  • sform <code> : set sform code
  • unifize [-GM] : bias field correction (adapted from AFNI 3dUnifize); optional -GM also scales gray-matter intensity toward a common target
  • allineate <base> [opts]: affine registration to match 'base' (from AFNI 3dAllineate)
    • opts: -cost XX (fast [default], fastcr, hel, lpc, lpa, ls) -cmass -nocmass -source_automask
    • -warp XX (sho, shr, srs, aff [default]) -interp XX (NN, linear [default], cubic)
    • -final XX (NN, linear, cubic [default]) or -nearest -linear -cubic
    • -fill XX (auto [default], zero, nan): out-of-FOV output fill. auto uses 0, or the source's darkest voxel if it is negative (CT/Hounsfield air ≈ -1000, so out-of-FOV reads as air rather than soft tissue); zero is always 0 (byte-identical to the historical behavior for positive-only MRI); nan. Not available for deface, whose fill stays the image minimum
    • -master <grid>: estimate at the base resolution but reslice the result onto <grid> (must share the base world frame, e.g. a higher-resolution template)
    • -savemat out.json: save the fitted world-space fixed_to_moving affine (and its inverse) as self-describing JSON. -applymat in.json: reslice the moving image onto base using a saved affine, doing no registration (exclusive with the registration/seed options; use -nearest for label/atlas volumes)
    • Registration seeds (applied to the moving image before the fit): -com (reset the origin to the brightness center of mass), -sym/-symd/-symb (fold a midsagittal-plane correction into the header; -symd de-obliques the frame first, -symb auto-competes both), -nosagseed (disable the in-MSP rigid seed -sym runs by default), -zoom (relax the scale range for abnormal-size subjects, e.g. infant vs adult template)
    • Skull-stripping is deface with a brain mask; to crop the field of view first, chain -robustfov before -allineate. Together these make niimath a superset of the standalone allineate registration tool.
    • Fast engine (the default): -cost fast (Hellinger/MI, robust cross-modal) is the default cost; -cost fastcr (correlation-ratio) is its same-modality variant. Both select an independent, SPM/FLIRT-inspired multiresolution 12-DOF estimator that is typically several times faster; -cost hel/lpc/lpa/ls select the ordinary AFNI-style engine instead. It runs a fixed schedule with internal sampling, so it rejects -warp/-interp/-source_automask/-dark_automask/-zoom (use a normal -cost for those) — but the -com/-sym/-symd/-symb header seeds DO work with it (they only re-pose the moving header before the fast fit). Default/-cmass chooses the supplied-affine or COM-recentered initialization from initial dependence×overlap, -com forces COM, and -nocmass forces the supplied affine; -final/-master/-savemat are also honored. -cost is last-one-wins. -weight <img> (a base-space region image, 3D with dims and world frame matching base) is an AFNI 3dAllineate-style graded weight: it is normalized to [0, 1] (divide by max) and applied per base voxel — a voxel weighted 0 is excluded, one near 1 dominates. It is not an exclusion mask; keep the out-of-ROI head attenuated (nonzero), because zeroing the whole exterior leaves global scale underdetermined and the cross-modal fit collapses into the scalp (an AFNI-style whole-head weight anchors absolute size). BOTH engines honor it: the ordinary engine (-cost hel/lpc/lpa/ls) loads it internally in place of its manufactured autoweight (graded, never binarized, even for the box-mode Hellinger/MI/CR costs), and the fast engine applies it at the finest 2 mm stage (coarse capture and global-scale selection stay whole-head). -weight is rejected only with stdin (-) and -applymat (which does no registration). A background-only weight (no positive support over the base foreground) is rejected. When -weight is given and the default fast engine falls back to the ordinary Hellinger engine, the weight is still honored (the ordinary engine consumes it), so the region request is never dropped.
  • deface <tmpl> <mask> [opts]: remove voxels using a template-space mask. Registers the input to tmpl (affine), inverts the transform, warps mask onto the input's native grid, and sets voxels where the warped mask < 0.5 to the image's finite minimum (≈0 for typical MRI; the input itself is never resampled). mask is in tmpl space: ≥0.5 = keep, <0.5 = remove. The mask determines what is removed — supply a brain mask to skull-strip (keep the brain) or a face mask to deface (remove the face).
    • opts: -cost XX (fast [default], fastcr, hel, lpc, lpa, ls) -cmass/-nocmass tuning + -final/-nearest/-linear/-cubic (default final: linear). Like -allineate, deface defaults to the fast engine; -cost hel selects the ordinary AFNI-style engine. Fast cannot honor -warp/-interp/-source_automask/-dark_automask (use -cost hel). The seed/matrix/master workflow options (-savemat/-applymat/-com/-sym/-symd/-symb/-nosagseed/-zoom/-master) apply to -allineate only and are rejected here
    • Breaking change: the former -skullstrip <tmpl> <mask> command was removed — it ran the identical operation. Replace -skullstrip with -deface (supply your brain mask); the result is unchanged.
  • reface <tmpl> <shell> <weight> [opts]: anonymize by face replacement (emulates AFNI afni_refacer2 -mode_reface). Registers the subject to tmpl, back-projects the signed template-space face-replacement shell onto the original subject grid, and composites an anonymized image (shell > 0 → the shell scaled by a brightness-match factor, shell == 0 → keep the subject, shell < 0 → zero), with an edge blend inside the replaced region. Output stays on the subject grid. Works with both engines and honors -weight (the weight argument is required — it is reused as the registration weight); opts are the -cost tuning as for deface (the shell back-projection is always nearest-neighbour, so -final does not apply). For privacy the coverage diagnostic fails closed: if little of the shell mapped into the subject FOV (<10%, a likely registration failure) -reface refuses to write the possibly-unanonymized image and returns an error.
  • qwarp <base> (built only with QWARP=1): nonlinear (deformable) registration to base, an attributed port of AFNI 3dQwarp -blur 0 3. It takes a single base argument and has no sub-options of its own, but it is an ordinary chain operation — it produces a warped image on the base grid, so you may chain further ops after it. The input must already be unifized, skull-stripped, affine-aligned, and share the base grid (same dims + world frame). Off by default (memory/CPU-heavy, impractically slow in WebAssembly) and depends on the allineate engine, so it is unavailable in an AL=0 build.
  • spm_coreg <ref> [opts]: SPM rigid-body coregistration of the chain image to ref (optional GPL module, see below)
    • opts: -cost XX (nmi [default], mi, ecc, ncc, ls) -sep -fwhm -dither 0|1 -coarse sparse|downsample -verbose 0|1
    • default reslices onto the ref grid (-interp trilinear [default]|nearest, -fill zero [default]|nan); -estimate instead rewrites only the source sform/qform
  • spm_deface <tmpl> <mask> [opts]: SPM analogue of deface, registering with spm_coreg (optional GPL module, see below)
    • opts: same estimate sub-options as spm_coreg, plus -interp
  • --dtifit -k <dwi> -r <bvec> -b <bval> -o <base> [-m <mask>] [-xflip 0|1|auto] : linear diffusion tensor fit (emulates FSL dtifit)
    • writes <base>_{FA,MD,L1,L2,L3,V1,V2,V3,S0,MO,tensor}; fit math from AFNI 3dDWItoDT (public domain)
    • -xflip auto (default) flips the bvec X component when the spatial transform determinant is positive, matching FSL
  • --qc <t1> --seg <seg> --csf <i[,j..]> --wm <i[,j..]> [--erode 0|1] [--out qc.tsv] : MRIQC-style anatomical quality metrics from a T1 + integer segmentation
    • writes a wide TSV (default qc.tsv) with CJV, cnr_noair, per-tissue/total SNR, WM2MAX, efc_brain, ICV fractions + mm³ volumes, and per-tissue summary stats
    • label convention: 0 = non-brain (excluded); --csf/--wm give disjoint CSF/WM label values, every other non-zero label is GM. Only air-free metrics are computed; this hard-segmentation variant uses unrounded intensities and NumPy-linear percentiles, so it is not numerically interchangeable with MRIQC's soft-PVM summaries. cnr_noair/efc_brain flag deviations from MRIQC norms
  • --compare <ref> : report if images are identical, terminates without saving new image
  • --bitmap -a name.png : mimic fsl slicer (see niimath-bitmap)
  • filename.nii : mimic fslhd (can also export to a txt file: 'niimath T1.nii 2> T1.txt') report header and terminate without saving new image

Identical Versus Equivalent Results

This project is designed to provide equivalent results to fslmaths. In most cases, the results are identical, virtually all others are equivalent. The results are not always identical as computations are conducted using floating point representations, where the precise order of instructions can generate small rounding differences. As Kernighan and Plauger note Floating point numbers are like piles of sand; every time you move one you lose a little sand and pick up a little dirt. Raw brain imaging data is typically stored as 16-bit integers (and the signal-to-noise is typically a fraction of this dynamic range), whereas niimath uses single (32-bit) or double (64-bit) floating point representations. Therefore, while niimath may generate results that are not identical, the results are intended to be always comparable. For further information on floating point accuracy, suggested readings include here and here.

This project includes the --compare argument that allows you to directly the results of niimath and fslmath. A validation repository is also available, which runs hundreds of commands to detect the quality of the output. The validation repository includes two scripts. The batch.sh script tests functions that generate identical results. The close.sh script conducts tests on functions that provide equivalent but not identical results. For example, for tensor decomposition the vector [1 0 0] is the functionally identical to [-1 0 0] as for fiber tracking the fiber direction ignores vector polarity. When a difference is detected by the --compare function, a report is generated allowing the user to determine the equivalence of solutions:

Images Differ: Correlation r = 1, identical voxels 73%
 Most different voxel -69.3133 vs -69.3133 (difference 1.52588e-05)
 Most different voxel location 43x17x49 volume 39
Image 1 Descriptives
 Range: -472.393..491.385 Mean -0.00121971 StDev 6.8898
Image 2 Descriptives
 Range: -472.393..491.385 Mean -0.00121971 StDev 6.8898
    86.29 real    41.08 user    23.41 sys

Some operations do generate known meaningfully different results. These are listed below, with the rationale for the discrepancy provided:

  1. The command "fslmaths inputimg -add 0 outputimg -odt input" can convert a uint8 image float output despite explicit request to retain input type. This occurs if the input image header has a non-unitary scale slope or non-zero intercept. In contrast, niimath retains both the datatype and the intensity scaling parameters.
  2. Different versions of fslmaths perform differently for the pass through "fslmaths in out" which is useful for copying files. Old versions will losslessly save in the input datatype, while fslmaths 6.0 converts the data to float. niimath retains the datatype.
  3. The fslmaths function -fillh26 will sometimes fill unconnected regions. An example has been provided to the FSL team. niimath provides the correct solution.
  4. The fslmaths -dilD function does not do what it claims. It introduces a blurring effect that reduces edge artifacts that plague iterative morphology operations. Unfortunately, this effect is conducted in a consistent order that introduces a spatial shift in signal. In contrast, niimath does the dilation as described. Note there are better solutions for these functions. The niimath '-edt' operation can also be used for dilation.
  5. The fslmaths -roc function works differently than described in the help. It appears to ignore voxels near the edge of an image and generates "given object has non-finite elements" if any dimension is less than 12 voxels. When provided with an external noise file, it generates additional columns in the output file that are not described. It does not seem to precisely detect the desired AROC-thresh, but samples at different stepped intervals. niimath attempts to emulate the stepped intervals for reporting, but determines the precise cutoff.
  6. Be aware that fslmaths help suggests If you apply a Binary operation (one that takes the current image and a new image together), when one is 3D and the other is 4D, the 3D image is cloned temporally to match the temporal dimensions of the 4D image. This is not the case for -thr or -uthr: if the second item is 4D, only the first volume is used and the output remains 3D. Particularly odd is uthr: fslmaths 3D -uthr 4D out will fill input volume 3D with zeros, regardless of mask values.
  7. Perhaps understandably, fslmaths in1 -rem 0 out will throw an exception. However, fslmaths in1 -rem in2 out will throw an exception if any voxel in the image in2 is zero. While this seems understandable, niimath provides a description for this error.
  8. The fslmaths function -rem returns the integer modulus remainder. This replicates the C % operator. This may be unexpected, e.g. in Python 2.7 % 2 is 0.7, as is Matlab's mod(2.7, 2), as is standard C fmod. niimath clones the fslmaths behavior, but also includes a new function -mod to return the modulus fractional remainder.
  9. Be aware that fslmaths takes account of whether the image has a negative determinant or not (flipping the first dimension). However, fslstats does not do this, so fslstats coordinates are often misleading. For example, consider an image in RAS orientation, where the command fslstats tfRAS -x will give coordinates that are incompatible with fslmath's tfceS function. niimath attempts to emulate the behavior of fslmaths for the relevant functions (-index -roi, -tfceS).
  10. Neither -subsamp2 nor -subsamp2offc handle anti-aliasing. Be aware that -subsamp2offc can exhibit odd edge effects. The problem is simple to describe, for slices in the middle of a volume, and output slice is weighted 50% with the center slice, and 25% for the slice below and the slice above. This makes sense. However, bottom slices (as well as first rows, first columns, last rows, last columns, last slices) the filter weights 75% on the central slice and just 25% on the slice above it. Signal from this 2nd slice is heavily diluted. A better mixture would be 66% edge slice and 33% 2nd slice. This latter solution is used by niimath.
  11. fslmaths 6.0.0..6.0.3 were unable to process files where the string ".nii" appears in a folder name. For example, consider the folder "test.niim", the command fslmaths ~/test.niim/RAS -add 0 tst will generate an exception. niimath will recognize that this is a folder name and not a file extension and work correctly. niimath helped detect this anomaly and it is an example of how a clone can help provide feedback to the developers of the original project.
  12. The fslmaths function -ztop fails to clamp extreme values.

Finally, it is possible that there are some edge cases where niimath fails to replicate fslmath. This is new software, and many of the operations applied by fslmaths are undocumented. If users detect any problems, they are encouraged to generate a Github issue to report the error.

Superior Performance

Here are some examples of speed up factors you can expect. The sample T1-weighted and resting state data use the HCP 3T Imaging Protocol sequences. The tests were run on a laptop with a four core (8 thread, 28w) MacOS laptop:

Command : Seconds (GZ) Serial (GZ) Parallel (GZ)
fslmaths rest -s 2.548 out : 270 (424) 5.0x (2.9x) 8.6x (6.3x)
fslmaths t1 -kernel boxv 7 -dilM out : 216 (228) 245x (41x) 225x (72x)
fslmaths rest -Tmean -mul -1 -add rest out : 101 (328) 2.5x (2.5x) 2.8x (4.5x)
niimath rest -demean out (same output as above) 3.5x (3.0x) 4.6x (6.2x)
fslmaths rest -bptf 77 8.68 out : 998 (1155) 2.0x (2.0x) 6.8x (6.7x)

Here are the same testson a desktop computer with twelve cores (24 threads, Ryzen 3900X):

Command : Seconds (GZ) Serial (GZ) Parallel (GZ)
fslmaths rest -s 2.548 out : 123 (229) 4.2x (2.4x) 9.9x (12.1x)
fslmaths t1 -kernel boxv 7 -dilM out : 156 (159) 371x (37x) 371x (248x)
fslmaths rest -Tmean -mul -1 -add rest out : 32 (186) 1.7x (2.5x) 1.8x (7.6x)
niimath rest -demean out (same output as above) 2.6x (2.6x) 3.0x (10.8x)
fslmaths rest -bptf 77 8.68 out : 887 (1019) 2.6x (2.5x) 23x (23.0x)

Gaussian smoothing (-s/-dog/unsharp) uses a contiguous vectorizable kernel in every build (native, WASM, and the shared registration pyramid). Neighborhood mean, minimum, maximum, and erosion filters keep their local gathers but evaluate adjacent interior outputs in SIMD lanes, avoiding the non-finite propagation errors of separable running-sum and deque filters.

Converting voxelwise images to a triangulated mesh

niimath can convert NIfTI images to meshes, suitable for viewing in Surfice, blender, SUMA, FreeSurfer and other tools. The features are based on nii2mesh and the features are almost identical. However, the order of arguments is different to match the expectations of fslmaths/niimath. So the call nii2mesh -r 1 bet.nii.gz r100.ply becomes niimath bet.nii.gz -mesh -r 1 r100.ply. The benefit of niimath is that you can apply voxel-based operations before you create your mesh. This allows you to apply morphological operations (-close, -ero, -dilM). As an example, to apply a 4mm Gaussian smooth before creating a mesh, you could run ./niimath mni152.nii.gz -s 4 -mesh -i 122 -l 0 -b 1 b1.ply. As described on the nii2mesh page, you can create independent meshes for each area in an atlas using the command:

niimath D99_atlas_v2.0_right.nii.gz -mesh -p 0 -s 10 -a D99_v2.0_labels_semicolon.txt ./gii/D99s10roi.gii

Both programs allow you to explicitly set the isolevel using the -i value, so -i 128 we render a surface for voxels brighter than 128. One minor difference between the programs is that niimath allows you also request dark, medium and bright using the -i d, -i m and -i b commands respectively. These use Otsu's method, and typically identify pleasing values. Also, if the user does not specify an isolevel be aware that nii2mesh chooses the middle brightness (the midpoint between the darkest and brightest value) while niimath uses the medium Otsu threshold. The latter is more robust to outliers. Here are examples illustrating this usage:

niimath bet.nii.gz -mesh -i 128 Isolevel128.gii
niimath bet.nii.gz -mesh -i d darkIsolevel.gii
niimath bet.nii.gz -mesh -i m medIsolevel.gii
niimath bet.nii.gz -mesh -i b brightIsolevel.gii

Creating bitmaps

You can use the --bitmap option to visualize the results of any operations. This option has arguments inspired by fsl's slicer, but introduces new features. The niimath-bitmap provides examples and documentation.

WebAssembly

niimath can also be compiled to WebAssembly (Wasm) allowing it to be inserted into web pages and Node.js projects. Here is a live demo with links to source code and instructions.

License

niimath is licensed under the 2-Clause BSD License. Except where noted, the code was written by Chris Rorden in 2020-2022. The code in `tensor.c` was written by Daniel Glen (2004) from the US National Institutes of Health and is not copyrighted (though it is included here with the permission of the author). The FSL team graciously allowed the text strings (help, warning and error messages) to be copied verbatim. The Butterworth Filter Coefficients in `bw.c` are from [Exstrom Labs](http://www.exstrom.com/journal/sigproc/) and the authors provided permission for it to be included in this project under the [LGPL](https://www.gnu.org/licenses/lgpl-3.0.en.html), the file provides additional details. Taylor Hanayik from the FSL group provided pseudo-code for some functions where there is little available documentation. The PolygoniseCube function comes from Cory Bloyd's public domain [Marching Cubes example](http://paulbourke.net/geometry/polygonise/) program described here. The bwlabel.cpp file was written by Jesper Andersson, who has explicitly allowed this to be shared using the BSD 2-Clause license. The [high performance](https://github.com/gaspardpetit/base64) base64.cpp was written by Jouni Malinen and is distributed under the BSD license. The mesh simplification was written by [Sven Forstmann](https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification) and distributed under the MIT license. It was ported from C++ to C by Chris Rorden. The [radixsort.c](https://github.com/bitshifter/radixsort) was written by Cameron Hart (2014) using the zlib license.

The optional -spm_coreg and -spm_deface commands link the separate GPL-2 spm_coreg module (the niimath_gpl submodule), enabled only when built with make GPL=1 (-DHAVE_GPL). A binary built that way is a combined work licensed under the GNU GPL-2; the default build (without the module) remains BSD-2-Clause. The version string reported by niimath ends in GPL or BSD to indicate which applies.

Links

  • imbibe is a R wrapper for niimath, allowing the performance of tuned code with the convenience of a scripting language.
  • 3dcalc is AFNI's tool for image arithmetic.
  • c3d provides mathematical functions and format conversion for medical images.
  • fslmaths is the inspiration for niimath.

Citation

  • Rorden C, Webster M, Drake C, Jenkinson M, Clayden JD, Li N, Hanayik T (2024) niimath and fslmaths: replication as a method to enhance popular neuroimaging tools. Aperture Neuro.4. doi:10.52294/001c.94384

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

niimath-1.0.20260720.tar.gz (639.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

niimath-1.0.20260720-cp313-cp313-win_amd64.whl (831.7 kB view details)

Uploaded CPython 3.13Windows x86-64

niimath-1.0.20260720-cp313-cp313-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp313-cp313-macosx_11_0_arm64.whl (772.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

niimath-1.0.20260720-cp313-cp313-macosx_10_13_x86_64.whl (915.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

niimath-1.0.20260720-cp312-cp312-win_amd64.whl (831.8 kB view details)

Uploaded CPython 3.12Windows x86-64

niimath-1.0.20260720-cp312-cp312-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp312-cp312-macosx_11_0_arm64.whl (772.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

niimath-1.0.20260720-cp312-cp312-macosx_10_13_x86_64.whl (915.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

niimath-1.0.20260720-cp311-cp311-win_amd64.whl (831.7 kB view details)

Uploaded CPython 3.11Windows x86-64

niimath-1.0.20260720-cp311-cp311-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp311-cp311-macosx_11_0_arm64.whl (772.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

niimath-1.0.20260720-cp311-cp311-macosx_10_9_x86_64.whl (907.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

niimath-1.0.20260720-cp310-cp310-win_amd64.whl (831.7 kB view details)

Uploaded CPython 3.10Windows x86-64

niimath-1.0.20260720-cp310-cp310-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp310-cp310-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp310-cp310-macosx_11_0_arm64.whl (772.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

niimath-1.0.20260720-cp310-cp310-macosx_10_9_x86_64.whl (907.6 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

niimath-1.0.20260720-cp39-cp39-win_amd64.whl (831.7 kB view details)

Uploaded CPython 3.9Windows x86-64

niimath-1.0.20260720-cp39-cp39-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp39-cp39-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp39-cp39-macosx_11_0_arm64.whl (772.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

niimath-1.0.20260720-cp39-cp39-macosx_10_9_x86_64.whl (907.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

niimath-1.0.20260720-cp38-cp38-win_amd64.whl (831.7 kB view details)

Uploaded CPython 3.8Windows x86-64

niimath-1.0.20260720-cp38-cp38-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp38-cp38-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp38-cp38-macosx_11_0_arm64.whl (772.4 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

niimath-1.0.20260720-cp38-cp38-macosx_10_9_x86_64.whl (907.6 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

niimath-1.0.20260720-cp37-cp37m-win_amd64.whl (831.7 kB view details)

Uploaded CPython 3.7mWindows x86-64

niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ x86-64

niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ ARM64

niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

niimath-1.0.20260720-cp37-cp37m-macosx_10_9_x86_64.whl (907.6 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file niimath-1.0.20260720.tar.gz.

File metadata

  • Download URL: niimath-1.0.20260720.tar.gz
  • Upload date:
  • Size: 639.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for niimath-1.0.20260720.tar.gz
Algorithm Hash digest
SHA256 a919bba2e8622f98090e1a6b050d505183987cef9507b0ee5f79635aa07e0155
MD5 3ea297e5536a3fe3eeb1866b032e339c
BLAKE2b-256 0e9c4af92be8300fd8ae9d8458bacc6e372ddc4905fee7142ef4040baa15896e

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720.tar.gz:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 db4732fc2d2d4835a409905609968aa51d25aebd8c015ffc7bf18b10b4f18136
MD5 7dc4605ff3a6bfa1d29c860fca69f052
BLAKE2b-256 8711252970971e723cf9befa5bded6394cf8f35347593fc8785d27806b845d2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d087e1935fc30522ebb9773d47163685890123404443aac9b8128beaa17e055a
MD5 ce3ebc0acaed773c3d148163c9e944fb
BLAKE2b-256 7d7f41dded8b7a4b92cef4fcc73f80fd413ef359775b9255dafcb7c042d8246b

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6e21d7df797cdc05ab64ff3c41196470058577dcb0dbcf9389432034162343f3
MD5 8ba6f86a01dcda08dde90ac940fd03bb
BLAKE2b-256 afbfecd8ee86f856d96c8d6078d88387dd6f79c5bdb39dff5a397900e18c8a7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a46ccfe7f8fea2e544a4c3ef17bc9b1ff299af36941342844b61e9a8e5ac4411
MD5 e9413c8795aa30f0799755179cbd0ad9
BLAKE2b-256 5df93e3fc417268e40eae159f1c3c0e3080cec19d1fb79c8ec6a24c62c7fa381

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f2e0be1f5819816118ab66366ce98b84191975b6f669104085222e616c2a69f2
MD5 00eed513266350380cf7f55d0a39911c
BLAKE2b-256 8c015ab6b24b8676c82b592e0c1890742e9ba3e5dacd691133bf58f7d92ba259

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c7efa1d2f853b491c821c4c29d27d5a09dea7608a2dd4db05759d88a76cf830
MD5 10ab84079450a76d1fa169ffe7ea2f4a
BLAKE2b-256 867044e6cea3f5c4b02fbcd8c6c1b65337ddfe9df09f1833fe9d4ded2215b419

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2b03a0d8609aa996ad4a29be21804e3e11b230d8453289047a46a426900e4aa3
MD5 bc9264ae87bb6a3f814838d267022461
BLAKE2b-256 cedebc07de7bec3490fbdc6478141198cb20fc3147b57440113a7d8b79b89304

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5a33921b1312a963d2e2a553133746dc46b308f78a429e8447ba2eeba4672139
MD5 06b451e9bf8631276d92f7e781ecd50e
BLAKE2b-256 7b093bb9e513421d3a7ef8e58b33eb6e323166994b0d6ea0673c9acb12b36e49

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2c57140abcc5c527dafbc1945ffc1bca454e2c203ad520bf10e24254efd9a3f6
MD5 b145aa6de4d58601c480d6ca50af4d61
BLAKE2b-256 7e3cf60904f237f34cda634a32a4ef1843ef6330b1591c7b0bf9c2c048d9858b

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c92f359c58c1bdbce99a3c671c843ddd7cbe0bb9769f730df4dff57353d1a29d
MD5 cecdedff22bfd87b427fe21ed822789c
BLAKE2b-256 e72cb9a4c816c0997163fa62880270606f2ddbdacd644da4d1c62284b34dbedf

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3fc755b9a2960f0fd8a6f1c882dacc4fbe33c275686f35e16e2eea61be76891
MD5 356587ea794630238378e8cb200e9432
BLAKE2b-256 430529ac9a5e571bfeaaf7518128ee6867e90d98beecbc34125174e3384456cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 69f71d751fcab3f441b575beca5f22559f6670b4920e7fcb27370a4154723372
MD5 a6c6f73d462f970095c93855eeaf8a52
BLAKE2b-256 b218749d29ee5ddc75203a7ce8b59f8a182e15d4c3f118a4dafb72b9bf59aba1

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75ac655dcc9153b44e5262f7c54712e5be89e5c80a718f428a88113218f237d0
MD5 b47ffb5fdf02645c35dd98080790fbb5
BLAKE2b-256 8820767e3f953b0deb3d2d86ddf4a0585ccb6bd9295019bbcda064594e8a4bf6

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1399015683e1d2990e568cf285afc4150df40002493d105148d3660aba33d523
MD5 d75205838316e4a6f894524e1c05bc4b
BLAKE2b-256 8804b33c1e3fe046582296d2db28a0302e7cdf1e1cf90a2c94a85e20c546dc7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bce4cb7f6e3cdff173c3278fab887d5a33fda85f626f0f78deaf51c32ecf3f14
MD5 5c174f8f02fa49f9cbbd27b7b3824c08
BLAKE2b-256 16c94d1a2f4f03ec210eff681345bc9704f4fd448277d8bff2c2743f7bad9509

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5760cc6e86b3c24682feb748481b8584f6e91cd621a67843e22dfd14df97a49d
MD5 36e8ea49ed8a07455c2014749bd964e8
BLAKE2b-256 b54359329db5726f236ad89949889407ebd005ddce71103533a435d1b21d8029

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 39b9020027afb881bcb9df5bd0d8bfa2b337fc66611194cd501e816038b83aef
MD5 09284bc16cb5ae395ff42676254e5790
BLAKE2b-256 5578a2f25bc8a49c89c5361877c054817d8b5beb8702a5cc1e62bdcbef64f9e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eeec7bf515607155e9cbbbab794eb7ea85a210ffa1315933c92b443f7c92f17b
MD5 70dfa6a008e7646332d6572e6c9ef51a
BLAKE2b-256 b378728b03fb05eb9d034a33e6bc9a3fd3a86d2d66c4306ff67fa0e6ca433c25

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e38852177f996662eae0740f1d7af287e7f88584779c055646d694e58949eb53
MD5 3dfebb38638ca56d3a09888532db0eb5
BLAKE2b-256 1ba502b8fbf2227d050e97982fc3cc273f25792ddf2462e99fbb62c23c07fc86

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94d566f6c1efc8b554420b620ed01bf09ed83f2d66e8462ce68657c4648aa7e5
MD5 bab907eb803035e1554eef4408f7e2a9
BLAKE2b-256 eff6c6e5fcaccef154f420e3218483c3e62623d2a7ecfdc9a4c67837f7213d01

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 feb6bdff58d8842d46d938bf20f1093c0fe6591ac0db5627363f7a3dee84930c
MD5 e26e21eff7b3c5aebace7f3325340d1d
BLAKE2b-256 1a725059fc2f65901e413728c9a98046fe459dec73127be3d771013f96cd187c

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 05f8d338f320cbfa925201b95bdeb84a916b9e48877a7194aba27ccbce1b0a62
MD5 9868f81907113bdceae7199253890df7
BLAKE2b-256 8bd929f7ef1af73313df4b727bead11c9991ccd25d801147a5bb5658f3ca4d65

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cf96229c4e23d7e7bc0af1e79e98dd90cebbdc7ec779dd168f93541e2b5c3ba4
MD5 bc29ec51751586ea977aab5b4718c013
BLAKE2b-256 3a46001852ffa0bf632803cd2dec36864e618b2bb56e412482f498a1236b4b57

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b28120156f20f637c2e827c5f4316d27877ac3b419cda9d700d69994ac300a8b
MD5 d511d0615060872bbcbbb8083fe35b3a
BLAKE2b-256 4bc43a286c72f4e9b75123aab030ad7958dcb73aed6ea925b269bdac082dad88

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e5b3533d5fcadc568924fb774653e1af6e1f0734e4a744e9864c69552aca4e8d
MD5 b1aa7cc4d5a45aed26f2919f17ca103b
BLAKE2b-256 57951f79e2f62c9754fab12d7e713f3a2b0d0b0f6f1133d7b884dde8ecf9c1e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7543d2c7c0c482b8801aca852ab0fb57a2d72e7a1b3653c4b5e5a2759c17eed5
MD5 53e56fb22aea464dd5d47eb8e0b21134
BLAKE2b-256 5f454af0615207dce77aeee8a3b19b6c759623cb14f97fa1aa56d723228567b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74e6b0c7544e6f42200fa4d4be686604bcb7884ea490ab03797c1024c321b5fa
MD5 720ecf8cf9047a2c0a596a6ca6303966
BLAKE2b-256 e029c037a7e0f35e25f67ddd997fff4f542ba411f3fcd5e99fbe8cbc64b708f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 86182e897690b49ea859aad8006104355905622f516e7e45fe59042a1cb505a8
MD5 06d697074ba540c148db0fdb2f911405
BLAKE2b-256 0b22503b4fe2ccda413236907e002c03431fb2be277caad3c5859198e8cf040b

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5366093baccc56765c3ec1e8382f11eecee46118a9e6ed289ac02ecdb7116444
MD5 ff7edfe9317f15fe3361e3eeddb56ff8
BLAKE2b-256 350b8160e8b568be41650ae19f1f6fda1039babcc970e9ca53416f50a888f400

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 95b655fdc1251baef38498830db4b8c54724d095e5e77fb7e6535374e2a3f1da
MD5 de987a7076601bc1c9b55da35ce046f0
BLAKE2b-256 0e952c5765b078c6bf44a1eeeeb8098da743bdb864744f226800ed572ffe95b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 225a18e028ec6a33f5414a2792ea4cb9c0b1120b6b172c9db45a68babfc540a3
MD5 3852f53da42a3d567a7236acaf4c3763
BLAKE2b-256 a1f4e0ef6593979e0725a88dbac0a08f35726ea00582da86ab7d0696350f819a

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a0ec4ae8ad309bdf2576b91ff922f5365fe5f841f15980fa4e6d2e1ba210b0d
MD5 adda647c952f5adcf578217780fbb6d2
BLAKE2b-256 50f99f36ecd7e209122b4a2f4a0ae7a5956fcf9ce3703dbb24bf8bd7f7d90ab6

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8a4c0e2d8c54355a0d093cff0f1a7f6da55f6058a297576f2775a001a106747a
MD5 259aeea9e854adf421e19fd003fcd186
BLAKE2b-256 ff6d8638bfc3b0b6c65e0e7d514fab42a35ccc8dcac34c1db844754c18366ca2

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bbf39bd8f3c93e9107478d7e2238e18ffdbd9d0098ef032056ecc0eed7526b9
MD5 f6946c19d633c3193af47a8618cc766f
BLAKE2b-256 a9d4b46fdccf54b57d5032a6a9cd28addcc556bf4cbf36970ce67a176e4ce108

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bf0da82a17e5376b2c6e209d0d46678bca7443f8db79c7897e0d4ebc437a660c
MD5 f8da43016ca7698872fad78758dffa5a
BLAKE2b-256 bc53e762d782545400e23a4ff9f954b6a4ea41cd324d08276a055ed2e49299ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f0506e49ffd7edea1aa743d1615d0661a915facbed4b17570c3b4429fec5344a
MD5 402a403cfe70eeace3fd491085f82a37
BLAKE2b-256 77dfe467e7efa985b47c517b088f003a2b75eb07be55eb68e753547b88642fb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2b339a4bec903c3d158581b3ebb89c74783ab89c1adfb036d33dac7ee70d108f
MD5 d939e260b4e5fa2ca348917bcda051d3
BLAKE2b-256 8c889ab38d56f4e60513a21908a8684f1eba22ebda17425886ecd8a299b6b4b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0199b85c4e48d646fdb5f142c514bafc7ec01b70f89a57f84883db5be8085f48
MD5 a6b9c0202f4675c6d7d7f9a5080ca133
BLAKE2b-256 ad32ec78b33a589831a4e28b65a9464423f5a3f6152f57d936b605746bb39943

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b67ca13d50cdeec43aa4d6cf683cecbde396c29e65098477df84e37547835e5d
MD5 f061feab6ddda1d139668faa6ea8a381
BLAKE2b-256 a8f2dc5edf834443fedac1daee6565488849e23d3edc2d6b554903d18ef966e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7a7e8e79493d22c5da270e6b58b3d68f83545d78b6344ac2f537299e5b9e8193
MD5 d76201954e2cda063fd0d526b3f1594b
BLAKE2b-256 6dbc7c872229360babb9b37d7f10ac3a57223e31db5ec4d27c0a40a5df11eeb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c8541a2572d868d84da36d5c4cc4f2ae67344abe8bb9420f1145a17f6a9717d9
MD5 9e9871dc4e8938fc325b7ce25e0e7dde
BLAKE2b-256 0e22b83bc6cbafc6b9de88c1ef1cf880844ef13f1b98a0e18b6c094422d2218c

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc263c2c3232a475d09fedbe2288419a820ec2c5bac7ba5750302ed0d8b901d6
MD5 bff261e35c1b87d754946d6dacab0e42
BLAKE2b-256 8fe76150fd232ccb7ab52c041ff7496d294a70b362a790eb4b776934d49fe4ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp38-cp38-macosx_10_9_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 eb201f79daa159d1029363cfa4144636d41c06de9859b5a2eb227687dde86171
MD5 eb5172273591b98bdbf456bde89b85c0
BLAKE2b-256 77014ccb1afbc11f874b967d09bf0872d2c4633707e87d115dd84f8b627e2de3

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp37-cp37m-win_amd64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 de945a1a192b7f437ff3bbdd307fc2a90dd5ad370fcf4cbfdd11fb53949d2947
MD5 f94f049d2387c8328b98e6562c0bbe12
BLAKE2b-256 dea9a9c7f5ab39abdde9d7816c5dd8a6d866463711b09fa85b705dbadeed71c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bfaa21ff7ba5348a5edf7676ad1a1b4307448e143157120f7d4fcf411ebe5cdf
MD5 f586b591c29712a14a4f3b9db6e96146
BLAKE2b-256 adb0c6992357b676bd838e48991f33743092cc33f917d0e5cc8791c0099fc61a

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp37-cp37m-musllinux_1_2_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 838ebc9c70539940f75d055542dadc2d10a47baeba27e768ee2344d74ddfe0c8
MD5 feaaf0308b7b9a9fec9de5b9a99f9c4b
BLAKE2b-256 fbeb743efadd4b0ff30f462aacf2511225ceaa2ae370d4a438bbfa9fd141f834

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 487ae303fd960a9b4f8b211918f74153745d3c5e3a69415a54fffd21ec46992e
MD5 4565a8860563d2919a8f51455874d740
BLAKE2b-256 311f61c0baa704d963e44e561c0797b78909941b40efda9348aa5b05e47bab04

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niimath-1.0.20260720-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for niimath-1.0.20260720-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 06a947742a69c33ac53fdfafe6ad4829b8534309fed410650910c629b3eaffe2
MD5 f9b72aabb9eafe535bb781ae42146d3a
BLAKE2b-256 2a00f6bc1c8ade7b957317fd400c758443992ebeb3463564c8c62eccc1c58233

See more details on using hashes here.

Provenance

The following attestation bundles were made for niimath-1.0.20260720-cp37-cp37m-macosx_10_9_x86_64.whl:

Publisher: release.yml on rordenlab/niimath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page