Skip to page content
SAVRN
Search Plan a project

Dataset

ling-sand-packs

by Substrate Commons SubstrateCommons/ling-sand-packs

Resin-set quartz and garnet sand packs whose CPMG was measured and whose pore space was then imaged: the relaxometry reference where the measurement and the geometry are the SAME object. Relaxation is not in the walk, so one pack answers every relaxivity.

Rows—
Configurations—
Size6.5 GB
Licensecc-by-4.0
AccessPublicly accessible
Monthly Downloads—

Dataset Card

By Substrate Commons, published under cc-by-4.0, revision 8faea92f2550.

Resin-set quartz and garnet sand packs whose CPMG was measured and whose pore space was then imaged: the relaxometry reference where the measurement and the geometry are the SAME object. Relaxation is not in the walk, so one pack answers every relaxivity. The reference it reproduces is Model Synthetic Samples for Validation of NMR Signal Simulations (Transport in Porous Media), on the same object: grade A by the rule of dmipy-sim#459. These packs disagree with the published number. 1_G100: replayed 222.049 against 178.449 printed in Model Synthetic Samples for Validation of NMR Signal Simulations (Ling et al. 2022), whose released te = 100 us echo train the value is read from, the log-mean of the released te = 100 us CPMG train of sample 1_G100, inverted on the 1 ms grid with the same estimator as ours: 24.433% of it, 6.17 standard uncertainties. The publication states no uncertainty (none stated: the paper prints no T2 value anywhere -- its comparison is Fig. 5, two distributions overlaid with no agreement metric -- and the released echo train carries no repeat, so the gate's budget rests on our own standard errors alone and the disagreement with them is recorded rather than failed on), so this disagreement cannot be failed on and is recorded instead. 6_Q100: replayed 855.685 against 727.084 printed in Model Synthetic Samples for Validation of NMR Signal Simulations (Ling et al. 2022), whose released te = 100 us echo train the value is read from, the log-mean of the released te = 100 us CPMG train of sample 6_Q100, inverted on the 1 ms grid with the same estimator as ours: 17.687% of it, 4.49 standard uncertainties. The publication states no uncertainty (none stated: the paper prints no T2 value anywhere -- its comparison is Fig. 5, two distributions overlaid with no agreement metric -- and the released echo train carries no repeat, so the gate's budget rests on our own standard errors alone and the disagreement with them is recorded rather than failed on), so this disagreement cannot be failed on and is recorded instead. No gate check fails on this: the publication states no uncertainty to fail it against, so the disagreement is a recorded number rather than a verdict. 2 of the gate's 60 checks failed; § The gate below names each one.

Every number on this card is read from a record in records/ of this dataset, written by the stage that measured it (the reference-pack protocol, dmipy-sim#482); none of it is transcribed, so this card, the gate and any paper read the same files.

The packs

pack substrate channels K band (Hz) T walkers contact: floor / err / target positions: floor / err / target size licence commit
ling-sand-packs/1_g100 ling2022/1_g100 positions, boundary_local_time, compartment 96 24 2 s 130,000 0.00367 / 2.7e-10 / 0.005 meets 0.00403 / 3.2e-07 / 0.005 meets 999.1 MB CC-BY-4.0 2a383d67
ling-sand-packs/2_q25g75 ling2022/2_q25g75 positions, boundary_local_time, compartment 96 24 2 s 130,000 0.00548 / 2.8e-10 / 0.005 below target 0.00548 / 3.7e-07 / 0.005 below target 999.1 MB CC-BY-4.0 2a383d67
ling-sand-packs/4_q50g50 ling2022/4_q50g50 positions, boundary_local_time, compartment 96 24 2 s 130,000 0.00517 / 2.5e-10 / 0.005 below target 0.00639 / 1.9e-07 / 0.005 below target 999.1 MB CC-BY-4.0 2a383d67
ling-sand-packs/5_q75g25 ling2022/5_q75g25 positions, boundary_local_time, compartment 96 13.7 3.5 s 130,000 0.00419 / 5e-10 / 0.005 meets 0.00709 / 2.6e-07 / 0.005 below target 1.7 GB CC-BY-4.0 2a383d67
ling-sand-packs/6_q100 ling2022/6_q100 positions, boundary_local_time, compartment 96 13.7 3.5 s 130,000 0.0042 / 4.6e-10 / 0.005 meets 0.0042 / 2.6e-07 / 0.005 meets 1.7 GB CC-BY-4.0 2a383d67

The trade the design records: the target floor 0.005 needs 347,438 walkers and the 60 GB memory budget allows 115,564 (measured: 0.51 MB resident per walker in the pack stage on this window). The design therefore sets 115,564 walkers; the tier that holds its target at that count is contact, and every tier's achieved floor is certified in the pack and shown on the card.

The save grid is 1000 us over 3.5 s (3,501 saves): 1 ms is the grid the log-mean is stable on (measured on the Imperial rocks: a 20 ms sampling moved it by a factor of two) and it holds every 100 us echo of their train within a save. Each PUBLISHED pack's own window is its released train's extent, which is why the five do not share one and each is in the walk record

pack walk sub-steps refused steps wall time peak resident budget
1_G100 130,000 walkers (recorded, not re-walked) 15 199 166 s 42.8 GB 60.0 GB
2_Q25G75 130,000 walkers (recorded, not re-walked) 15 201 165 s 42.8 GB 60.0 GB
4_Q50G50 130,000 walkers (recorded, not re-walked) 15 244 167 s 42.8 GB 60.0 GB
5_Q75G25 130,000 walkers (recorded, not re-walked) 15 370 294 s 42.8 GB 60.0 GB
6_Q100 130,000 walkers (recorded, not re-walked) 15 429 294 s 42.8 GB 60.0 GB
  • the pack was walked at 130,000 walkers where this design's pilot sets 115,564; the walk is not repeated, and what holds it to the budget is its own RECORDED peak of 42.8 GB rather than the pilot's projection

What is inside

Three orthogonal cross-sections through the centre of each substrate, rendered from the spec the pack embeds by dmipy_sim.spec.preview -- the same membership test the walk uses, so the picture cannot show a substrate the walk does not have.

1_G100

  • surface kinds: label_volume; pools free, garnet
  • pixel 3.935 um, scale bar 200 um
  • area fraction in the x-centre section: free 0.3899, garnet 0.6101 (the spec's realisation: porosity 0.3989, surface_to_volume 7.196e+04)

2_Q25G75

  • surface kinds: label_volume; pools free, quartz, garnet
  • pixel 3.936 um, scale bar 200 um
  • area fraction in the x-centre section: free 0.3917, garnet 0.5007, quartz 0.1077 (the spec's realisation: porosity 0.3834, surface_to_volume 7.445e+04)

4_Q50G50

  • surface kinds: label_volume; pools free, quartz, garnet
  • pixel 3.93 um, scale bar 200 um
  • area fraction in the x-centre section: free 0.3946, garnet 0.3226, quartz 0.2828 (the spec's realisation: porosity 0.3973, surface_to_volume 7.186e+04)

5_Q75G25

  • surface kinds: label_volume; pools free, quartz, garnet
  • pixel 3.936 um, scale bar 200 um
  • area fraction in the x-centre section: free 0.3777, garnet 0.1150, quartz 0.5072 (the spec's realisation: porosity 0.3821, surface_to_volume 7.068e+04)

6_Q100

  • surface kinds: label_volume; pools free, quartz
  • pixel 3.935 um, scale bar 200 um
  • area fraction in the x-centre section: free 0.3762, quartz 0.6238 (the spec's realisation: porosity 0.389, surface_to_volume 7.661e+04)

The reproduction

Grade A. the released data itself on the same released geometry: no free parameter marked 'ours' changes it. Their sample: the same physical object: the CPMG was measured on each pack, which was then resin-set and micro-CT imaged, and both halves are in the same deposit (the same object).

substrate quantity replayed (this pack) our direct walk theirs from vs direct band holds vs theirs
1_G100 T2_log_mean 222.049 ms 223.26 (SE 0.27%, delta_method, 200,000 walkers) 178.449 ms the log-mean of the released te = 100 us CPMG train of sample 1_G100, inverted on the 1 ms grid with the same estimator as ours 0.542% (0.14 σ) 3.02 σ = 11.976% yes 24.433% (6.2 σ), no uncertainty stated
6_Q100 T2_log_mean 855.685 ms 856.54 (SE 0.11%, delta_method, 200,000 walkers) 727.084 ms the log-mean of the released te = 100 us CPMG train of sample 6_Q100, inverted on the 1 ms grid with the same estimator as ours 0.100% (0.025 σ) 3.02 σ = 11.917% yes 17.687% (4.5 σ), no uncertainty stated

The quantity is compared on the grid the reference record states, with the solver it states; the gate refuses a reproduction on any other grid, because the grid is part of the measurement.

The free parameters, and whose they are:

  • rho = {'garnet': 9.85e-05, 'quartz': 1.25e-05} m/s -- theirs (paper §3.2): fitted by them per mineral to their own te = 100 us trains; an effective value tied to their 3.93 um voxel, because a segmentation's surface is the Manhattan area at that resolution, which is what both walks relax against
  • D0 = 2.3e-09 m^2/s -- theirs (paper §2.3): the brine's self-diffusion, stated
  • T2B = 3.0 s -- ours (not in the paper): the paper states no bulk T2; 3.0 s is ours, applied at replay and not in the walk, and the reproduction reports the log-mean over 2.4-3.1 s as well
  • T2 inversion = non-negative least squares with a second-difference penalty, lam = 0.1 (t2_distribution) - -- ours (the paper states its own only as a regularised inversion): non-negative least squares with a second-difference penalty on 60 points from 1 ms, applied to THEIR released train and to ours identically, so the two sides of the comparison share the estimator even though it is not theirs
  • surface rule = exp(-2 (rho/D) d_perp) per reflection - -- ours (the walk): the boundary local time is stored as a channel and weighted at replay; their walk kills a walker at an attempted move into a grain voxel. The two agree in the continuum limit

Where each number comes from:

1_G100 -- Model Synthetic Samples for Validation of NMR Signal Simulations (Ling et al. 2022), whose released te = 100 us echo train the value is read from, the log-mean of the released te = 100 us CPMG train of sample 1_G100, inverted on the 1 ms grid with the same estimator as ours (10.1007/s11242-022-01764-w, resolved via crossref at 2026-09-27T01:17:40Z as 'Model Synthetic Samples for Validation of NMR Signal Simulations'): read from https://doi.org/10.6084/m9.figshare.17161730, sha256 0eb1de561db7

6_Q100 -- Model Synthetic Samples for Validation of NMR Signal Simulations (Ling et al. 2022), whose released te = 100 us echo train the value is read from, the log-mean of the released te = 100 us CPMG train of sample 6_Q100, inverted on the 1 ms grid with the same estimator as ours (10.1007/s11242-022-01764-w, resolved via crossref at 2026-09-27T01:17:40Z as 'Model Synthetic Samples for Validation of NMR Signal Simulations'): read from https://doi.org/10.6084/m9.figshare.17161730, sha256 a9e09a21776d

Caveats:

  • echo_spacing -- Only their te = 100 us train is reproduced: it is the one their relaxivities were fitted on. The te-DEPENDENCE of their trains (100 us to 20 ms) IS the garnet's internal-gradient effect, and a label-volume pack carries no C3 field channel, so a longer-te train is refused by name rather than served as a decay without its dephasing.
  • grade -- The pre-protocol record of this family stated grade B as a FIELD, reasoning that the paper prints no T2 value. grade_of assigns A by rule: the quantity is read from their own RELEASED echo trains, which ARE the measurement, on the same physical object. What the absence of a printed number costs is the reference's uncertainty -- it is 0.0 with a reason, so the published- comparison cannot be failed on and its disagreement is recorded instead.
  • mixtures -- The three MIXTURES have no reference row. LabelVolume accumulates ONE boundary local time over every wall and Tissue.rho is one scalar, so a single pack cannot carry Ling's 12.5 um/s on quartz and 98.5 um/s on garnet at once. They are built, certified, gated and published -- the geometry, the positions and the contact channel are all sound -- and their spec declares NO nominal relaxivity, so a consumer must state one. Recorded as blocked (dmipy-sim#491), not approximated with one of the two numbers.
  • windows -- The five packs do not share a window: 3.5 s for the two quartz-rich packs (35,000 echoes) and 2.0 s for the three garnet-rich ones (20,000 echoes), each the extent of ITS OWN released train. The design's window is the longest and each pack's own is in the walk record.

The gate

Deterministic, reading only the records: 60 checks, 2 failed. The tolerance is the design record's terms in quadrature -- an analytic standard error, the reference's own stated uncertainty, and any measured systematic -- with no coverage factor and no resampled error bar.

pack verdict checks failures
1_G100 pass 13 —
2_Q25G75 FAIL 10 2_Q25G75/tier-contact-holds-as-designed
4_Q50G50 FAIL 10 4_Q50G50/tier-contact-holds-as-designed
5_Q75G25 pass 10 —
6_Q100 pass 13 —

The failures, as the gate states them:

  • 2_Q25G75/tier-contact-holds-as-designed: floor 0.00548 and codec error 2.84e-10 against the target 0.005; the design record predicted this tier would hold at 115,564 walkers and it does NOT: the pilot's scaling was falsified by the pack's own certificate
  • 4_Q50G50/tier-contact-holds-as-designed: floor 0.00517 and codec error 2.46e-10 against the target 0.005; the design record predicted this tier would hold at 115,564 walkers and it does NOT: the pilot's scaling was falsified by the pack's own certificate

Use me

One call that reproduces one number of the table above. It was EXECUTED when this card was built (7.2 s, ceiling 60 s), against the local file of the same sha256 as packs/1_g100.rpk, and printed:

T2 log-mean 222.0 ms
import numpy as np
from dmipy_sim.replay import ReplayPack
from examples.validation.talabi_micro_ct_rocks import t2_distribution, log_mean_T2

pk = ReplayPack.load("hf://SubstrateCommons/ling-sand-packs/packs/1_g100.rpk")
ell = pk.contact()                                        # the stored wall-contact channel, per save
L = np.cumsum(np.asarray(ell, np.float64), axis=1)        # the boundary local time
t = np.arange(pk.n_t) * pk.dt
S = np.exp(pk.nominal.rho / 2.3e-09 * L - t / 3.0).mean(axis=0)   # pk.nominal.rho IS Ling's for this mineral
every = round(1.0e-3 / pk.dt)
g = np.logspace(-3, 1, 60)
print("T2 log-mean %.1f ms" % (1e3 * log_mean_T2(g, t2_distribution(t[every::every], S[every::every], g))))

Reference and licences

  • the reference: Model Synthetic Samples for Validation of NMR Signal Simulations, https://doi.org/10.1007/s11242-022-01764-w -- cited, never redistributed. Ling et al. 2022 (Transport in Porous Media 142:623-639) for the packs, the measured CPMG and the fitted relaxivities; the micro-CT lattices and the echo trains are both in the figshare deposit 10.6084/m9.figshare.17161730 (CC BY 4.0).
  • figshare-ling2022: https://doi.org/10.6084/m9.figshare.17161730 at figshare record 10.6084/m9.figshare.17161730 (2021, 349939116 bytes as the record states) -- CC-BY-4.0 (https://creativecommons.org/licenses/by/4.0/), the host's text copied verbatim to records/licences/figshare-ling2022-CC-BY-4.0.txt (18653 characters, sha256 9ba9550ad484); 6_Q100_Extracted_Voxel-3.93micro_X-450_Y-450_Z-450_Labels_0-Pore_1-Quartz_ASCII.am (a9e09a21776d, 273.4 MB), 5_Q75G25_Extracted_Voxel-3.93micro_X-450_Y-450_Z-450_Labels_0-Pore_1-Quartz_2-Garnet_ASCII.am (4a03008ce6d8, 273.4 MB), 4_Q50G50_Extracted_Voxel-3.93micro_X-450_Y-450_Z-450_Labels_0-Pore_1-Quartz_2-Garnet_ASCII.am (7f6e4b34431e, 273.4 MB), 2_Q25G75_Extracted_Voxel-3.93micro_X-450_Y-450_Z-450_Labels_0-Pore_1-Quartz_2-Garnet_ASCII.am (89d829221ba1, 273.5 MB), 1_G100_Extracted_Voxel-3.93micro_X-450_Y-450_Z-450_Labels_0-Pore_1-Garnet_ASCII.am (0eb1de561db7, 273.4 MB)
  • the packs: CC-BY-4.0 images and echo trains; the packs are CC-BY-4.0 and no byte of the deposit is redistributed

Rendered by dmipy_sim.replay.reference from this dataset's records/. A bare republish of a pack regenerates the manifest-only card of dmipy_sim.replay.publish and drops this one; the protocol's publish stage writes this file last.

Details

Repository
SubstrateCommons/ling-sand-packs
Publisher
Substrate Commons
Task category
Not stated by the source
Tags
Not stated by the source
Size category
Not stated by the source
Languages
Not stated by the source
Revision
8faea92f2550d85fd3808db4d95b0247d8dfbc1e
Last updated
2026-09-27

Files

26 files, 6.5 GB in total.

Data14 files · 174.4 KB
Documentation1 file · 16.8 KB
Other10 files · 6.5 GB
Repository1 file · 2.8 KB
Every file
FileTypeSizeSHA-256
manifest.jsonData8.1 KB—
records/build.jsonData4.2 KB—
records/card.jsonData6.3 KB—
records/design.jsonData4.9 KB—
records/gate.jsonData19.0 KB—
records/licences/cc-by-4.0.txtData18.7 KB—
records/licences/figshare-ling2022-CC-BY-4.0.txtData18.7 KB—
records/pack.jsonData11.7 KB—
records/reference.jsonData10.3 KB—
records/source.jsonData4.0 KB—
records/spec.jsonData31.4 KB—
records/step_systematic.jsonData1.7 KB—
records/walk.jsonData5.4 KB—
reproduction.jsonData30.1 KB—
README.mdDocumentation16.8 KB—
packs/1_g100.rpkOther999.1 MB738f1a0d6c93
packs/2_q25g75.rpkOther999.1 MBc043549efdd3
packs/4_q50g50.rpkOther999.1 MB416dc4479fc9
packs/5_q75g25.rpkOther1.7 GB140f3602914a
packs/6_q100.rpkOther1.7 GB61dd34ea7eb9
previews/1_g100.pngOther32.2 KB33cc92e12867
previews/2_q25g75.pngOther34.5 KBb92ac176d6d4
previews/4_q50g50.pngOther33.8 KB521f4813e0ca
previews/5_q75g25.pngOther32.4 KB8840927cf81a
previews/6_q100.pngOther32.6 KBb1aea282c96d
.gitattributesRepository2.8 KB—

License and Download

License
cc-by-4.0
Access
No access gate
Download from Substrate Commons

Released by Substrate Commons through its official repository on Hugging Face. Read the license.