Scientific reader evidence

Reader behavior under measurement.

A compact, reproducible view of the first PureJsImage scientific-reader baseline: isolated operation timing, source-read behavior, absolute process memory, and output correctness across native scientific formats.

Baseline · Aug 15, 202631 readers43 workloadsLinux x64 · Node 24.16.0

What this page records

This is a dated baseline, not a regression gate. The page publishes a compact snapshot of the checked benchmark report so the evidence is stable and reviewable. Fixture preparation and output validation were excluded from timed operations, and the raw local artifact remains separate from this public data. Download the JSON snapshot.
31public reader IDs exercised
43baseline workload results
43supported outputs · 0 invalid or error results
19readers with direct range coverage

The baseline used 3 measured runs after 1 warmup per workload, with an isolated process for each run. It contains 13 representative measurements and 30 correctness-only measurements; correctness-only rows verify reader contracts without claiming representative large-input performance.

Recorded on Aug 15, 2026 from commit 6acf53304b44 using Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz with 16 logical CPUs. The benchmark process reported Linux 6.17.0-41-generic.

Measurement boundary

Each workload opens a scientific source through the same public reader boundary, detects and opens its document, enumerates datasets, opens the selected dataset, reads the selected plane or series, validates the result, and closes all resources. The report keeps process startup, module import, registry construction, fixture preparation, and validation evidence separate from the core operation timing.

  • Timing: total wall time, time to the first emitted block, and complete selected operation are reported as median / p95.
  • Source behavior: read calls, requested and returned bytes, unique source bytes touched, overfetch, and companion resolution are measured.
  • Memory: absolute process peak RSS is accompanied by external memory, ArrayBuffer memory, output bytes, and the largest emitted block.
  • Correctness: output sample type, component count, selected sample count, block count, and format-specific calibration assertions are checked before a result is published.

Reader coverage

Reader-level values below are the maximum median observed among that reader's baseline workloads. They are useful for finding source and memory boundaries, not for ranking unrelated formats against one another.

ReaderWorkloadsRepresentativeMax readsMax overfetchMax peak RSS
Gwyddion Simple Field21322.46×118.2 MiB
Nanonis SXM11482.02×124.6 MiB
Igor Binary Wave v511551.02×124.4 MiB
Digital Surf SUR/PRO11342.41×116.2 MiB
X3P surface exchange11456.75×119.8 MiB
ENVI10341.03×117.8 MiB
FITS11322.29×119.1 MiB
MRC/CCP410327.23×113.5 MiB
CBF/imgCIF10328.42×120.0 MiB
PNG11699.91×117.2 MiB
JPEG118820.47×130.4 MiB
WebP11344.82×126.3 MiB
BMP11382.18×115.5 MiB
JPEG 2000 / JP2117410.64×120.4 MiB
TIFF31551.44×120.4 MiB
OME-TIFF104310.68×118.7 MiB
Aperio SVS21851.07×131.8 MiB
Gatan DigitalMicrograph201,3707.88×129.2 MiB
FEI/Thermo TIA SER20681.29×118.0 MiB
FEI/Thermo TIA EMI10472.92×116.4 MiB
NCEM EMD 0.210434.29×120.2 MiB
FEI/Thermo Velox EMD20512.06×136.4 MiB
Lispix RPL/RAW10359.86×119.5 MiB
EMSA/MAS spectrum10327.39×114.3 MiB
NRRD203413.28×120.2 MiB
MetaImage MHD/MHA203410.93×123.4 MiB
NIfTI-1/2203513.19×121.2 MiB
NumPy NPY203510.51×119.2 MiB
NanoMegas ASTAR blockfile10365.45×114.6 MiB
Quantum Detectors Merlin MIB10359.90×115.1 MiB
ANG/CTF orientation map20329.82×117.8 MiB

Baseline workload detail

Timing and source columns show median / p95 where both are available. Peak RSS is the median absolute process peak. The workload title and support boundary describe the fixture-backed claim; they do not imply a universal guarantee for every file in that format.

WorkloadReaderClassStatusWall msFirst blockReadsOverfetchPeak RSS
GSF numeric surface planeGwyddion Simple FieldRepresentativesupported3.9 ms / 5.4 ms0.10 ms / 0.16 ms32 / 322.46× / 2.46×118.2 MiB
Nanonis SXM AFM planeNanonis SXMRepresentativesupported8.6 ms / 12.9 ms1.4 ms / 1.9 ms48 / 482.02× / 2.02×124.6 MiB
Igor binary wave planeIgor Binary Wave v5Representativesupported8.8 ms / 8.9 ms1.6 ms / 2.1 ms55 / 551.02× / 1.02×124.4 MiB
Digital Surf compressed surface planeDigital Surf SUR/PRORepresentativesupported4.8 ms / 5.0 ms0.17 ms / 0.19 ms34 / 342.41× / 2.41×116.2 MiB
X3P ISO 5436 planeX3P surface exchangeRepresentativesupported4.9 ms / 5.1 ms0.56 ms / 0.59 ms45 / 456.75× / 6.75×119.8 MiB
ENVI hyperspectral band planeENVICorrectness-onlysupported3.8 ms / 4.1 ms0.30 ms / 0.32 ms34 / 341.03× / 1.03×117.8 MiB
FITS cube planeFITSRepresentativesupported4.6 ms / 4.8 ms0.30 ms / 0.31 ms32 / 322.29× / 2.29×119.1 MiB
MRC volume planeMRC/CCP4Correctness-onlysupported3.0 ms / 3.1 ms0.11 ms / 0.11 ms32 / 327.23× / 7.23×113.5 MiB
CBF detector frameCBF/imgCIFCorrectness-onlysupported3.3 ms / 3.8 ms0.11 ms / 0.11 ms32 / 328.42× / 8.42×120.0 MiB
PNG scientific image adapterPNGRepresentativesupported4.9 ms / 4.9 ms1.3 ms / 1.4 ms69 / 699.91× / 9.91×117.2 MiB
JPEG scientific image adapterJPEGRepresentativesupported16.5 ms / 16.6 ms6.0 ms / 8.2 ms88 / 8820.47× / 20.47×130.4 MiB
WebP scientific image adapterWebPRepresentativesupported19.6 ms / 20.0 ms1.6 ms / 1.9 ms34 / 344.82× / 4.82×126.3 MiB
BMP scientific image adapterBMPRepresentativesupported3.2 ms / 3.2 ms0.30 ms / 0.30 ms38 / 382.18× / 2.18×115.5 MiB
JPEG 2000 scientific image adapterJPEG 2000 / JP2Representativesupported5.4 ms / 5.7 ms1.6 ms / 1.6 ms74 / 7410.64× / 10.64×120.4 MiB
Ordinary TIFF bounded regionTIFFRepresentativesupported5.6 ms / 6.5 ms0.59 ms / 0.89 ms55 / 551.44× / 1.44×118.7 MiB
OME-TIFF metadata and planeOME-TIFFCorrectness-onlysupported4.8 ms / 15.8 ms0.54 ms / 0.69 ms43 / 4310.68× / 10.68×118.7 MiB
Aperio SVS whole-slide regionAperio SVSRepresentativesupported19.7 ms / 28.5 ms8.0 ms / 13.0 ms70 / 701.03× / 1.03×128.3 MiB
DigitalMicrograph ordinary 2D imageGatan DigitalMicrographCorrectness-onlysupported39.4 ms / 44.1 ms0.38 ms / 0.40 ms1,370 / 1,3702.24× / 2.24×129.2 MiB
DigitalMicrograph 4D-STEM diffraction planeGatan DigitalMicrographCorrectness-onlysupported9.8 ms / 13.7 ms0.32 ms / 0.48 ms190 / 1907.88× / 7.88×120.1 MiB
TIA SER image element planeFEI/Thermo TIA SERCorrectness-onlysupported6.3 ms / 7.5 ms0.22 ms / 0.33 ms58 / 581.29× / 1.29×116.9 MiB
TIA SER spectrum-image energy seriesFEI/Thermo TIA SERCorrectness-onlysupported5.3 ms / 6.0 ms0.22 ms / 0.30 ms68 / 681.23× / 1.23×118.0 MiB
TIA EMI metadata with SER companion planeFEI/Thermo TIA EMICorrectness-onlysupported7.2 ms / 7.4 ms0.19 ms / 0.20 ms47 / 472.92× / 2.92×116.4 MiB
NCEM EMD image planeNCEM EMD 0.2Correctness-onlysupported7.4 ms / 7.5 ms0.47 ms / 0.53 ms43 / 434.29× / 4.29×120.2 MiB
Velox EMD image planeFEI/Thermo Velox EMDCorrectness-onlysupported41.6 ms / 43.7 ms0.59 ms / 0.63 ms49 / 492.04× / 2.04×136.4 MiB
Velox EMD complex FFT planeFEI/Thermo Velox EMDCorrectness-onlysupported27.5 ms / 28.0 ms0.70 ms / 0.82 ms51 / 512.06× / 2.06×133.8 MiB
RPL/RAW depth-fixed planeLispix RPL/RAWCorrectness-onlysupported3.8 ms / 4.1 ms0.43 ms / 0.46 ms35 / 359.86× / 9.86×119.5 MiB
EMSA calibrated spectrum seriesEMSA/MAS spectrumCorrectness-onlysupported2.6 ms / 2.9 ms0.05 ms / 0.06 ms32 / 327.39× / 7.39×114.3 MiB
NRRD raw planeNRRDCorrectness-onlysupported3.0 ms / 3.4 ms0.32 ms / 0.37 ms34 / 3413.28× / 13.28×118.6 MiB
NRRD gzip planeNRRDCorrectness-onlysupported3.9 ms / 4.0 ms0.10 ms / 0.11 ms33 / 3312.40× / 12.40×120.2 MiB
MetaImage local payload planeMetaImage MHD/MHACorrectness-onlysupported3.1 ms / 3.3 ms0.36 ms / 0.40 ms34 / 3410.93× / 10.93×119.9 MiB
MetaImage detached payload planeMetaImage MHD/MHACorrectness-onlysupported3.1 ms / 3.2 ms0.21 ms / 0.22 ms33 / 3310.54× / 10.54×123.4 MiB
NIfTI scaled planeNIfTI-1/2Correctness-onlysupported3.4 ms / 4.0 ms0.38 ms / 0.40 ms35 / 359.02× / 9.02×118.8 MiB
Gzip NIfTI scaled planeNIfTI-1/2Correctness-onlysupported5.5 ms / 9.1 ms0.11 ms / 0.11 ms34 / 3413.19× / 13.19×121.2 MiB
NPY C-order planeNumPy NPYCorrectness-onlysupported4.1 ms / 12.2 ms0.43 ms / 0.87 ms35 / 3510.51× / 10.51×119.2 MiB
NPY Fortran-order planeNumPy NPYCorrectness-onlysupported2.7 ms / 2.9 ms0.27 ms / 0.29 ms35 / 3510.51× / 10.51×118.4 MiB
BLO 4D-STEM diffraction planeNanoMegas ASTAR blockfileCorrectness-onlysupported3.3 ms / 4.2 ms0.53 ms / 0.56 ms36 / 365.45× / 5.45×114.6 MiB
MIB 4D-STEM diffraction planeQuantum Detectors Merlin MIBCorrectness-onlysupported3.2 ms / 3.8 ms0.45 ms / 0.55 ms35 / 359.90× / 9.90×115.1 MiB
EBSD ANG map planeANG/CTF orientation mapCorrectness-onlysupported3.0 ms / 3.1 ms0.08 ms / 0.08 ms32 / 329.82× / 9.82×117.8 MiB
EBSD CTF map planeANG/CTF orientation mapCorrectness-onlysupported2.7 ms / 2.8 ms0.08 ms / 0.08 ms32 / 329.40× / 9.40×114.3 MiB
TIFF metadata-only openTIFFCorrectness-onlysupported4.8 ms / 5.1 ms50 / 501.33× / 1.33×118.2 MiB
TIFF first emitted blockTIFFCorrectness-onlysupported5.4 ms / 6.4 ms0.77 ms / 0.81 ms55 / 551.44× / 1.44×120.4 MiB
GSF full selected planeGwyddion Simple FieldCorrectness-onlysupported4.6 ms / 4.6 ms0.33 ms / 0.33 ms32 / 322.46× / 2.46×115.9 MiB
Aperio random direct regionsAperio SVSCorrectness-onlysupported33.5 ms / 34.2 ms7.8 ms / 7.8 ms85 / 851.07× / 1.07×131.8 MiB

Range-backed coverage

The separate range profile covers 24 direct-range workloads across 19 readers at 0, 5, 25, 100 ms of underlying-read latency. It is designed to expose round-trip sensitivity and coalescing behavior without pretending that a full-file reader has remote range semantics.

Nanonis SXM, Igor Binary Wave v5, X3P surface exchange, ENVI, FITS, MRC/CCP4, TIFF, OME-TIFF, Aperio SVS, Gatan DigitalMicrograph, FEI/Thermo TIA SER, FEI/Thermo TIA EMI, NCEM EMD 0.2, FEI/Thermo Velox EMD, Lispix RPL/RAW, MetaImage MHD/MHA, NumPy NPY, NanoMegas ASTAR blockfile, Quantum Detectors Merlin MIB.

The published snapshot above is the zero-latency baseline. Run the range profile locally for the expanded latency matrix and inspect its isolated-process report before making performance claims.

Reproduce the evidence

The harness and fixture policy are documented in the repository's scientific reader source and memory harness section.

npm run bench:scientific:smoke
npm run bench:scientific:baseline
npm run bench:scientific:range
npm run bench:scientific:full

Use smoke for a fast contract check, baseline for the page's workload set, range for direct-range latency coverage, and full for the complete profile. Generated fixtures and raw reports stay under the ignored benchmark artifact directory; the page's JSON snapshot is the reviewable public surface.