Chase commited on
Commit
0d6db02
·
1 Parent(s): 42b53b4

Lighter mesh for phones: tools/build.py --coarsen N (and UNROLL_STEP) keeps every Nth sampled row and column of a built mesh with the same UV mapping; PHerc0172 lite mesh 527,834 vertices (from 2,082,140), 1.5 MB packed, loaded automatically on phones via geometry.lite (?mesh=full or ?mesh=lite overrides); tear threshold follows the mesh step

Browse files
README.md CHANGED
@@ -75,7 +75,7 @@ For testing, `unrollView.damageStats()` reports the counts, the floor height, `s
75
  From the Space's root, with Python 3, `numpy`, `scipy`, `tifffile`, `Pillow` and `curl`:
76
 
77
  1. `python tools/fetch.py` lists the public bucket and downloads the meshes and ink previews into `raw/` (about 110 MB).
78
- 2. `python tools/build.py` writes `data/scroll.bin`, `data/scroll.json`, the atlases and `data/hi/`. It reads the X-ray layer straight from the bucket.
79
  3. `python tools/gpu_layer.py` rebuilds the ink_9um (9 µm) layer. It needs the ink_9um output TIFFs in `gpu/wNNN/` (about 25 MB each, not shipped). Regenerate them with the model card's inference command on the surface-volume URLs in `data/gpu/receipts/`.
80
 
81
  ## Licence and credits
 
75
  From the Space's root, with Python 3, `numpy`, `scipy`, `tifffile`, `Pillow` and `curl`:
76
 
77
  1. `python tools/fetch.py` lists the public bucket and downloads the meshes and ink previews into `raw/` (about 110 MB).
78
+ 2. `python tools/build.py` writes `data/scroll.bin`, `data/scroll.json`, the atlases and `data/hi/`. It reads the X-ray layer straight from the bucket. `UNROLL_STEP` (default 3) sets the mesh coarseness; `python tools/build.py --coarsen 2 data/<scroll>` writes a lighter `scroll_lite.*` copy for phones without new downloads.
79
  3. `python tools/gpu_layer.py` rebuilds the ink_9um (9 µm) layer. It needs the ink_9um output TIFFs in `gpu/wNNN/` (about 25 MB each, not shipped). Regenerate them with the model card's inference command on the surface-volume URLs in `data/gpu/receipts/`.
80
 
81
  ## Licence and credits
app.js CHANGED
@@ -265,8 +265,10 @@ window.__unroll = { scroll: () => ({ key: SCROLL_KEY, id: MAN.id, trusted: TRUST
265
 
266
  let M, binBuf = null, texInk, texCT, MESHB = null;
267
  const blankImg = () => { const c = document.createElement('canvas'); c.width = c.height = 4; return c; };
 
 
268
  if (MAN.geometry.format === 'grid-int16') {
269
- const g = MAN.geometry;
270
  M = JSON.parse(new TextDecoder().decode(await SRC.bytes(g.index, 6e4)));
271
  // atlases: WebP first, and the JPG fallback if this browser cannot decode WebP or the file does not arrive
272
  const atl = async (l) => {
@@ -477,7 +479,8 @@ if (wins.some((w) => !w)) loadFail(`The geometry file has no data for ${ORDER.fi
477
  let S = 0;
478
  const gpuIds = OV_IDS;
479
  const meshes = [];
480
- const decim = MOBILE ? 2 : 1;
 
481
  let Rmax = 0;
482
 
483
  // Keep only the real sheet: drop triangle islands (connected through shared vertices) that are tiny next to the
@@ -565,7 +568,7 @@ function gridGeometry(w) {
565
  if (f0 < C) for (let c = 0; c < f0; c++) colAng[c] = colAng[f0];
566
  // triangles, skipping holes and tears
567
  const idx = [];
568
- const tear = CELL * 3 * 3.2 * decim;
569
  const d2 = (p, q) => {
570
  const dx = pos[p * 3] - pos[q * 3], dy = pos[p * 3 + 1] - pos[q * 3 + 1], dz = pos[p * 3 + 2] - pos[q * 3 + 2];
571
  return dx * dx + dy * dy + dz * dz;
@@ -981,6 +984,7 @@ let fly = null;
981
  const ROLL_OFFSET = new THREE.Vector3(-105, 52, 235);
982
  const ROLL_OFFSET_PORTRAIT = new THREE.Vector3(-70, 70, 330);
983
  const rollOffset = () => (camera.aspect < 1 ? ROLL_OFFSET_PORTRAIT : ROLL_OFFSET);
 
984
  function flyTo(pos, tgt, dur = 2.4) {
985
  fly = { p0: camera.position.clone(), t0: controls.target.clone(), p1: pos, t1: tgt, start: performance.now(), dur: dur * 1000 };
986
  }
 
265
 
266
  let M, binBuf = null, texInk, texCT, MESHB = null;
267
  const blankImg = () => { const c = document.createElement('canvas'); c.width = c.height = 4; return c; };
268
+ // a lighter copy of the mesh (geometry.lite) for phones and low-power devices; ?mesh=full or ?mesh=lite overrides
269
+ const LITE = MAN.geometry.format === 'grid-int16' && !!MAN.geometry.lite && (params.get('mesh') === 'lite' || (MOBILE && params.get('mesh') !== 'full'));
270
  if (MAN.geometry.format === 'grid-int16') {
271
+ const g = LITE ? { ...MAN.geometry, ...MAN.geometry.lite } : MAN.geometry;
272
  M = JSON.parse(new TextDecoder().decode(await SRC.bytes(g.index, 6e4)));
273
  // atlases: WebP first, and the JPG fallback if this browser cannot decode WebP or the file does not arrive
274
  const atl = async (l) => {
 
479
  let S = 0;
480
  const gpuIds = OV_IDS;
481
  const meshes = [];
482
+ const decim = MOBILE && !LITE ? 2 : 1; // the lite mesh is already coarse: use every vertex
483
+ const GSTEP = M.step || 3; // grid step of the built mesh, in cells
484
  let Rmax = 0;
485
 
486
  // Keep only the real sheet: drop triangle islands (connected through shared vertices) that are tiny next to the
 
568
  if (f0 < C) for (let c = 0; c < f0; c++) colAng[c] = colAng[f0];
569
  // triangles, skipping holes and tears
570
  const idx = [];
571
+ const tear = CELL * GSTEP * 3.2 * decim;
572
  const d2 = (p, q) => {
573
  const dx = pos[p * 3] - pos[q * 3], dy = pos[p * 3 + 1] - pos[q * 3 + 1], dz = pos[p * 3 + 2] - pos[q * 3 + 2];
574
  return dx * dx + dy * dy + dz * dz;
 
984
  const ROLL_OFFSET = new THREE.Vector3(-105, 52, 235);
985
  const ROLL_OFFSET_PORTRAIT = new THREE.Vector3(-70, 70, 330);
986
  const rollOffset = () => (camera.aspect < 1 ? ROLL_OFFSET_PORTRAIT : ROLL_OFFSET);
987
+ window.__unrollLite = LITE;
988
  function flyTo(pos, tgt, dur = 2.4) {
989
  fly = { p0: camera.position.clone(), t0: controls.target.clone(), p1: pos, t1: tgt, start: performance.now(), dur: dur * 1000 };
990
  }
data/PHerc0172/scroll_lite.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2b380ae549563ff6ab147de6ac07e0feba705c9d9c7c8039af3229f52afdff46
3
+ size 3167004
data/PHerc0172/scroll_lite.i16p.gz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f4a683f5f2116d115579202b2a4a99637ea47222812656045c957bbf23e4387
3
+ size 1513032
data/PHerc0172/scroll_lite.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"scroll":"PHerc0172","voxelMM":0.00791,"cellMM":0.1582,"axis":{"centre":[4804.922171153291,3315.9748308295643,6895.580078125],"dxdz":-0.09232726359777392,"dydz":0.032765505408861646},"atlas":{"w":4096,"h":4096,"ppmm":4.731609571300031},"windings":[{"id":"w052","seg":"20251212105627-w052_20251212105627148_flatboi","rows":89,"cols":103,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,609],"gridH":529,"gridW":610,"offset":0,"bytes":55002,"widthMM":96.5,"heightMM":83.69,"areaCM2":72.78,"radiusMM":15.18,"atlas":[0.231689453125,0.64404296875,0.34326171875,0.74072265625],"hi":"hi/w052.jpg","ink_source":"PHerc0172-20251212105627-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251212105627-on-20241024131838-7.91um.tifxyz"},{"id":"w053","seg":"20251211152543-w053_20251211152543204_flatboi","rows":90,"cols":104,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,529],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,616],"gridH":530,"gridW":617,"offset":55002,"bytes":56160,"widthMM":97.61,"heightMM":83.85,"areaCM2":74.13,"radiusMM":15.36,"atlas":[0.00146484375,0.64404296875,0.1142578125,0.740966796875],"hi":"hi/w053.jpg","ink_source":"PHerc0172-20251211152543-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251211152543-on-20241024131838-7.91um.tifxyz"},{"id":"w054","seg":"20251211135303-w054_20251211135303394_flatboi","rows":90,"cols":106,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,529],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,625],"gridH":530,"gridW":626,"offset":111162,"bytes":57240,"widthMM":99.03,"heightMM":83.85,"areaCM2":75.65,"radiusMM":15.57,"atlas":[0.11572265625,0.64404296875,0.230224609375,0.740966796875],"hi":"hi/w054.jpg","ink_source":"PHerc0172-20251211135303-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251211135303-on-20241024131838-7.91um.tifxyz"},{"id":"w055","seg":"20251211111451-w055_20251211111451620_flatboi","rows":91,"cols":107,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,536],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,634],"gridH":537,"gridW":635,"offset":168402,"bytes":58422,"widthMM":100.46,"heightMM":84.95,"areaCM2":77.65,"radiusMM":15.75,"atlas":[0.760009765625,0.529052734375,0.8759765625,0.627197265625],"hi":"hi/w055.jpg","ink_source":"PHerc0172-20251211111451-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251211111451-on-20241024131838-7.91um.tifxyz"},{"id":"w056","seg":"20251211095724-w056_20251211095724922_flatboi","rows":90,"cols":109,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,532],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,644],"gridH":533,"gridW":645,"offset":226824,"bytes":58860,"widthMM":102.04,"heightMM":84.32,"areaCM2":79.32,"radiusMM":15.95,"atlas":[0.87744140625,0.529052734375,0.995361328125,0.62646484375],"hi":"hi/w056.jpg","ink_source":"PHerc0172-20251211095724-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251211095724-on-20241024131838-7.91um.tifxyz"},{"id":"w057","seg":"20251210160810-w057_20251210160810301_flatboi","rows":92,"cols":110,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,543],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,650],"gridH":544,"gridW":651,"offset":285684,"bytes":60720,"widthMM":102.99,"heightMM":86.06,"areaCM2":80.84,"radiusMM":16.13,"atlas":[0.6396484375,0.529052734375,0.758544921875,0.62841796875],"hi":"hi/w057.jpg","ink_source":"PHerc0172-20251210160810-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251210160810-on-20241024131838-7.91um.tifxyz"},{"id":"w058","seg":"20251210153304-w058_20251210153304503_flatboi","rows":92,"cols":111,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,545],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,659],"gridH":546,"gridW":660,"offset":346404,"bytes":61272,"widthMM":104.41,"heightMM":86.38,"areaCM2":82.25,"radiusMM":16.33,"atlas":[0.517578125,0.529052734375,0.63818359375,0.62890625],"hi":"hi/w058.jpg","ink_source":"PHerc0172-20251210153304-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251210153304-on-20241024131838-7.91um.tifxyz"},{"id":"w059","seg":"20251210142414-w059_20251210142414060_flatboi","rows":81,"cols":111,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,475],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,659],"gridH":476,"gridW":660,"offset":407676,"bytes":53946,"widthMM":104.41,"heightMM":75.3,"areaCM2":71.77,"radiusMM":16.53,"atlas":[0.4560546875,0.64404296875,0.57666015625,0.73095703125],"hi":"hi/w059.jpg","ink_source":"PHerc0172-20251210142414-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251210142414-on-20241024131838-7.91um.tifxyz"},{"id":"w060","seg":"20251207123912-w060_20251207123912611_flatboi","rows":93,"cols":98,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,549],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,577],"gridH":550,"gridW":578,"offset":461622,"bytes":54684,"widthMM":91.44,"heightMM":87.01,"areaCM2":71.59,"radiusMM":16.26,"atlas":[0.410400390625,0.529052734375,0.51611328125,0.629638671875],"hi":"hi/w060.jpg","ink_source":"PHerc0172-20251207123912-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251207123912-on-20241024131838-7.91um.tifxyz"},{"id":"w061","seg":"20251107175958-w061_20251107175958270_flatboi","rows":102,"cols":107,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,601],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,633],"gridH":602,"gridW":634,"offset":516306,"bytes":65484,"widthMM":100.3,"heightMM":95.24,"areaCM2":85.84,"radiusMM":16.73,"atlas":[0.0908203125,0.529052734375,0.206787109375,0.63916015625],"hi":"hi/w061.jpg","ink_source":"PHerc0172-20251107175958-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251107175958-on-20241024131838-7.91um.tifxyz"},{"id":"w062","seg":"20250917143559-w062_20250917143559205_flatboi","rows":106,"cols":116,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,629],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,686],"gridH":630,"gridW":687,"offset":581790,"bytes":73776,"widthMM":108.68,"heightMM":99.67,"areaCM2":96.79,"radiusMM":17.18,"atlas":[0.482666015625,0.410888671875,0.608154296875,0.526123046875],"hi":"hi/w062.jpg","ink_source":"PHerc0172-20250917143559-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250917143559-on-20241024131838-7.91um.tifxyz"},{"id":"w063","seg":"20251107063327-w063_20251107063327215_flatboi","rows":108,"cols":119,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,641],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,703],"gridH":642,"gridW":704,"offset":655566,"bytes":77112,"widthMM":111.37,"heightMM":101.56,"areaCM2":102.77,"radiusMM":17.44,"atlas":[0.52978515625,0.289794921875,0.658447265625,0.4072265625],"hi":"hi/w063.jpg","ink_source":"PHerc0172-20251107063327-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251107063327-on-20241024131838-7.91um.tifxyz"},{"id":"w064","seg":"20251107110950-w064_20251107110950052_flatboi","rows":113,"cols":126,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,670],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,746],"gridH":671,"gridW":747,"offset":732678,"bytes":85428,"widthMM":118.18,"heightMM":106.15,"areaCM2":114.79,"radiusMM":17.8,"atlas":[0.666015625,0.156005859375,0.802490234375,0.278564453125],"hi":"hi/w064.jpg","ink_source":"PHerc0172-20251107110950-7.91um-53keV-volume-20241024131839-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251107110950-on-20241024131838-7.91um.tifxyz"},{"id":"w065","seg":"20251109232817-w065_20251109232817724_flatboi","rows":128,"cols":125,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,758],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,742],"gridH":759,"gridW":743,"offset":818106,"bytes":96000,"widthMM":117.54,"heightMM":120.07,"areaCM2":113.79,"radiusMM":17.94,"atlas":[0.41015625,0.00146484375,0.5458984375,0.14013671875],"hi":"hi/w065.jpg","ink_source":"PHerc0172-20251109232817-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251109232817-on-20241024131838-7.91um.tifxyz"},{"id":"w066","seg":"20251110110112-w066_20251110110112608_flatboi","rows":141,"cols":126,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,822,828,834,836],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,748],"gridH":837,"gridW":749,"offset":914106,"bytes":106596,"widthMM":118.49,"heightMM":132.41,"areaCM2":113.39,"radiusMM":18.06,"atlas":[0.00146484375,0.00146484375,0.138427734375,0.154541015625],"hi":"hi/w066.jpg","ink_source":"PHerc0172-20251110110112-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251110110112-on-20241024131838-7.91um.tifxyz"},{"id":"w067","seg":"20251110135803-w067_20251110135803677_flatboi","rows":111,"cols":125,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,656],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,742],"gridH":657,"gridW":743,"offset":1020702,"bytes":83250,"widthMM":117.54,"heightMM":103.94,"areaCM2":112.71,"radiusMM":18.18,"atlas":[0.803955078125,0.156005859375,0.939697265625,0.276123046875],"hi":"hi/w067.jpg","ink_source":"PHerc0172-20251110135803-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251110135803-on-20241024131838-7.91um.tifxyz"},{"id":"w068","seg":"20251111010954-w068_20251111010954408_flatboi","rows":110,"cols":126,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,653],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,745],"gridH":654,"gridW":746,"offset":1103952,"bytes":83160,"widthMM":118.02,"heightMM":103.46,"areaCM2":112.55,"radiusMM":18.32,"atlas":[0.00146484375,0.289794921875,0.1376953125,0.409423828125],"hi":"hi/w068.jpg","ink_source":"PHerc0172-20251111010954-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251111010954-on-20241024131838-7.91um.tifxyz"},{"id":"w069","seg":"20251111151836-w069_20251111151836406_flatboi","rows":138,"cols":147,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,817],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,822,828,834,840,846,852,858,864,870,872],"gridH":818,"gridW":873,"offset":1187112,"bytes":121716,"widthMM":138.11,"heightMM":129.41,"areaCM2":140.69,"radiusMM":18.57,"atlas":[0.139892578125,0.00146484375,0.29931640625,0.15087890625],"hi":"hi/w069.jpg","ink_source":"PHerc0172-20251111151836-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251111151836-on-20241024131838-7.91um.tifxyz"},{"id":"w070","seg":"20251111210734-w070_20251111210734722_flatboi","rows":109,"cols":126,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,645],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,748],"gridH":646,"gridW":749,"offset":1308828,"bytes":82404,"widthMM":118.49,"heightMM":102.2,"areaCM2":111.35,"radiusMM":18.52,"atlas":[0.13916015625,0.289794921875,0.276123046875,0.407958984375],"hi":"hi/w070.jpg","ink_source":"PHerc0172-20251111210734-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251111210734-on-20241024131838-7.91um.tifxyz"},{"id":"w071","seg":"20251112163527-w071_20251112163527854_flatboi","rows":109,"cols":127,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,644],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,753],"gridH":645,"gridW":754,"offset":1391232,"bytes":83058,"widthMM":119.28,"heightMM":102.04,"areaCM2":111.0,"radiusMM":18.65,"atlas":[0.390625,0.289794921875,0.5283203125,0.40771484375],"hi":"hi/w071.jpg","ink_source":"PHerc0172-20251112163527-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251112163527-on-20241024131838-7.91um.tifxyz"},{"id":"w072","seg":"20251113021010-w072_20251113021010674_flatboi","rows":108,"cols":127,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,637],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,753],"gridH":638,"gridW":754,"offset":1474290,"bytes":82296,"widthMM":119.28,"heightMM":100.93,"areaCM2":110.01,"radiusMM":18.77,"atlas":[0.772705078125,0.289794921875,0.910400390625,0.406494140625],"hi":"hi/w072.jpg","ink_source":"PHerc0172-20251113021010-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251113021010-on-20241024131838-7.91um.tifxyz"},{"id":"w073","seg":"20251113130119-w073_20251113130119516_flatboi","rows":107,"cols":127,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,635],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756],"gridH":636,"gridW":757,"offset":1556586,"bytes":81534,"widthMM":119.76,"heightMM":100.62,"areaCM2":109.7,"radiusMM":18.89,"atlas":[0.114013671875,0.410888671875,0.25244140625,0.527099609375],"hi":"hi/w073.jpg","ink_source":"PHerc0172-20251113130119-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251113130119-on-20241024131838-7.91um.tifxyz"},{"id":"w074","seg":"20251113152136-w074_20251113152136889_flatboi","rows":107,"cols":127,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,633],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,751],"gridH":634,"gridW":752,"offset":1638120,"bytes":81534,"widthMM":118.97,"heightMM":100.3,"areaCM2":108.91,"radiusMM":19.01,"atlas":[0.25390625,0.410888671875,0.391357421875,0.52685546875],"hi":"hi/w074.jpg","ink_source":"PHerc0172-20251113152136-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251113152136-on-20241024131838-7.91um.tifxyz"},{"id":"w075","seg":"20251113204233-w075_20251113204233755_flatboi","rows":106,"cols":126,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,628],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750],"gridH":629,"gridW":751,"offset":1719654,"bytes":80136,"widthMM":118.81,"heightMM":99.51,"areaCM2":108.0,"radiusMM":19.11,"atlas":[0.609619140625,0.410888671875,0.746826171875,0.52587890625],"hi":"hi/w075.jpg","ink_source":"PHerc0172-20251113204233-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251113204233-on-20241024131838-7.91um.tifxyz"},{"id":"w076","seg":"20251106170358-w076_20251106170358232_flatboi","rows":113,"cols":103,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,607],"gridH":673,"gridW":608,"offset":1799790,"bytes":69834,"widthMM":96.19,"heightMM":106.47,"areaCM2":87.29,"radiusMM":19.89,"atlas":[0.553466796875,0.156005859375,0.66455078125,0.279052734375],"hi":"hi/w076.jpg","ink_source":"PHerc0172-20251106170358-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251106170358-on-20241024131838-7.91um.tifxyz"},{"id":"w077","seg":"20251106133152-w077_20251106133152767_flatboi","rows":134,"cols":100,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,796],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,589],"gridH":797,"gridW":590,"offset":1869624,"bytes":80400,"widthMM":93.34,"heightMM":126.09,"areaCM2":83.0,"radiusMM":19.9,"atlas":[0.30078125,0.00146484375,0.40869140625,0.147216796875],"hi":"hi/w077.jpg","ink_source":"PHerc0172-20251106133152-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251106133152-on-20241024131838-7.91um.tifxyz"},{"id":"w078","seg":"20250926112011-w078_20250926112011918_flatboi","rows":115,"cols":105,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624],"gridH":685,"gridW":625,"offset":1950024,"bytes":72450,"widthMM":98.88,"heightMM":108.37,"areaCM2":88.4,"radiusMM":20.07,"atlas":[0.321533203125,0.156005859375,0.435791015625,0.28125],"hi":"hi/w078.jpg","ink_source":"PHerc0172-20250926112011-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926112011-on-20241024131838-7.91um.tifxyz"},{"id":"w079","seg":"20250926113336-w079_20250926113336891_flatboi","rows":122,"cols":138,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,725],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,818],"gridH":726,"gridW":819,"offset":2022474,"bytes":101016,"widthMM":129.57,"heightMM":114.85,"areaCM2":85.66,"radiusMM":20.13,"atlas":[0.822509765625,0.00146484375,0.97216796875,0.134033203125],"hi":"hi/w079.jpg","ink_source":"PHerc0172-20250926113336-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926113336-on-20241024131838-7.91um.tifxyz"},{"id":"w080","seg":"20250926114310-w080_20250926114310705_flatboi","rows":105,"cols":96,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,623],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570],"gridH":624,"gridW":571,"offset":2123490,"bytes":60480,"widthMM":90.33,"heightMM":98.72,"areaCM2":68.06,"radiusMM":20.5,"atlas":[0.748291015625,0.410888671875,0.8525390625,0.52490234375],"hi":"hi/w080.jpg","ink_source":"PHerc0172-20250926114310-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926114310-on-20241024131838-7.91um.tifxyz"},{"id":"w081","seg":"20251114202035-w081_20251114202035261_flatboi","rows":99,"cols":96,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,587],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570],"gridH":588,"gridW":571,"offset":2183970,"bytes":57024,"widthMM":90.33,"heightMM":93.02,"areaCM2":63.47,"radiusMM":20.4,"atlas":[0.208251953125,0.529052734375,0.3125,0.636474609375],"hi":"hi/w081.jpg","ink_source":"PHerc0172-20251114202035-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251114202035-on-20241024131838-7.91um.tifxyz"},{"id":"w082","seg":"20250926122938-w082_20250926122938619_flatboi","rows":121,"cols":97,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,715],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,575],"gridH":716,"gridW":576,"offset":2240994,"bytes":70422,"widthMM":91.12,"heightMM":113.27,"areaCM2":76.94,"radiusMM":20.93,"atlas":[0.107177734375,0.156005859375,0.21240234375,0.286865234375],"hi":"hi/w082.jpg","ink_source":"PHerc0172-20250926122938-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926122938-on-20241024131838-7.91um.tifxyz"},{"id":"w083","seg":"20250926132117-w083_20250926132117595_flatboi","rows":117,"cols":98,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,580],"gridH":697,"gridW":581,"offset":2311416,"bytes":68796,"widthMM":91.91,"heightMM":110.27,"areaCM2":77.67,"radiusMM":20.6,"atlas":[0.2138671875,0.156005859375,0.320068359375,0.283447265625],"hi":"hi/w083.jpg","ink_source":"PHerc0172-20250926132117-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926132117-on-20241024131838-7.91um.tifxyz"},{"id":"w084","seg":"20250926145427-w084_20250926145427439_flatboi","rows":82,"cols":101,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,482],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600],"gridH":483,"gridW":601,"offset":2380212,"bytes":49692,"widthMM":95.08,"heightMM":76.41,"areaCM2":50.73,"radiusMM":21.06,"atlas":[0.3447265625,0.64404296875,0.45458984375,0.732421875],"hi":"hi/w084.jpg","ink_source":"PHerc0172-20250926145427-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926145427-on-20241024131838-7.91um.tifxyz"},{"id":"w085","seg":"20251110135146-w085_20251110135146457_flatboi","rows":107,"cols":82,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,631],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,483],"gridH":632,"gridW":484,"offset":2429904,"bytes":52644,"widthMM":76.57,"heightMM":99.98,"areaCM2":65.47,"radiusMM":20.64,"atlas":[0.392822265625,0.410888671875,0.481201171875,0.5263671875],"hi":"hi/w085.jpg","ink_source":"PHerc0172-20251110135146-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251110135146-on-20241024131838-7.91um.tifxyz"},{"id":"w086","seg":"20250926150345-w086_20250926150345176_flatboi","rows":105,"cols":82,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,622],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,484],"gridH":623,"gridW":485,"offset":2482548,"bytes":51660,"widthMM":76.73,"heightMM":98.56,"areaCM2":65.49,"radiusMM":20.72,"atlas":[0.85400390625,0.410888671875,0.942626953125,0.524658203125],"hi":"hi/w086.jpg","ink_source":"PHerc0172-20250926150345-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926150345-on-20241024131838-7.91um.tifxyz"},{"id":"w087","seg":"20251112000002-w087_20251112000002214_flatboi","rows":105,"cols":81,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,620],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480],"gridH":621,"gridW":481,"offset":2534208,"bytes":51030,"widthMM":76.09,"heightMM":98.24,"areaCM2":64.58,"radiusMM":20.85,"atlas":[0.00146484375,0.529052734375,0.08935546875,0.642578125],"hi":"hi/w087.jpg","ink_source":"PHerc0172-20251112000002-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251112000002-on-20241024131838-7.91um.tifxyz"},{"id":"w088","seg":"20250926153406-w088_20250926153406704_flatboi","rows":123,"cols":105,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,727],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624],"gridH":728,"gridW":625,"offset":2585238,"bytes":77490,"widthMM":98.88,"heightMM":115.17,"areaCM2":71.68,"radiusMM":21.14,"atlas":[0.706787109375,0.00146484375,0.821044921875,0.134521484375],"hi":"hi/w088.jpg","ink_source":"PHerc0172-20250926153406-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20250926153406-on-20241024131838-7.91um.tifxyz"},{"id":"w089","seg":"20251203230500-w089_20251203230500465_flatboi","rows":109,"cols":103,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,645],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,610],"gridH":646,"gridW":611,"offset":2662728,"bytes":67362,"widthMM":96.66,"heightMM":102.2,"areaCM2":70.69,"radiusMM":21.27,"atlas":[0.277587890625,0.289794921875,0.38916015625,0.407958984375],"hi":"hi/w089.jpg","ink_source":"PHerc0172-20251203230500-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251203230500-on-20241024131838-7.91um.tifxyz"},{"id":"w090","seg":"20251204060522-w090_20251204060522416_flatboi","rows":108,"cols":103,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,608],"gridH":643,"gridW":609,"offset":2730090,"bytes":66744,"widthMM":96.34,"heightMM":101.72,"areaCM2":70.73,"radiusMM":21.44,"atlas":[0.659912109375,0.289794921875,0.771240234375,0.4072265625],"hi":"hi/w090.jpg","ink_source":"PHerc0172-20251204060522-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251204060522-on-20241024131838-7.91um.tifxyz"},{"id":"w091","seg":"20251204071911-w091_20251204071911070_flatboi","rows":108,"cols":103,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,638],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,607],"gridH":639,"gridW":608,"offset":2796834,"bytes":66744,"widthMM":96.19,"heightMM":101.09,"areaCM2":70.47,"radiusMM":21.58,"atlas":[0.00146484375,0.410888671875,0.112548828125,0.527587890625],"hi":"hi/w091.jpg","ink_source":"PHerc0172-20251204071911-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251204071911-on-20241024131838-7.91um.tifxyz"},{"id":"w092","seg":"20251204101314-w092_20251204101314959_flatboi","rows":114,"cols":106,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,676],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,627],"gridH":677,"gridW":628,"offset":2863578,"bytes":72504,"widthMM":99.35,"heightMM":107.1,"areaCM2":72.08,"radiusMM":21.81,"atlas":[0.437255859375,0.156005859375,0.552001953125,0.27978515625],"hi":"hi/w092.jpg","ink_source":"PHerc0172-20251204101314-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251204101314-on-20241024131838-7.91um.tifxyz"},{"id":"w093","seg":"20251204192708-w093_20251204192708445_flatboi","rows":127,"cols":145,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,752],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,822,828,834,840,846,852,858,864],"gridH":753,"gridW":865,"offset":2936082,"bytes":110490,"widthMM":136.84,"heightMM":119.12,"areaCM2":74.31,"radiusMM":21.93,"atlas":[0.54736328125,0.00146484375,0.705322265625,0.13916015625],"hi":"hi/w093.jpg","ink_source":"PHerc0172-20251204192708-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251204192708-on-20241024131838-7.91um.tifxyz"},{"id":"w094","seg":"20251205115859-w094_20251205115859448_flatboi","rows":95,"cols":88,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,562],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,519],"gridH":563,"gridW":520,"offset":3046572,"bytes":50160,"widthMM":82.26,"heightMM":89.07,"areaCM2":52.42,"radiusMM":21.64,"atlas":[0.31396484375,0.529052734375,0.408935546875,0.6318359375],"hi":"hi/w094.jpg","ink_source":"PHerc0172-20251205115859-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251205115859-on-20241024131838-7.91um.tifxyz"},{"id":"w095","seg":"20251206184729-w095_20251206184729906_flatboi","rows":122,"cols":96,"rowIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570,576,582,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,723],"colIdx":[0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,258,264,270,276,282,288,294,300,306,312,318,324,330,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,540,546,552,558,564,570],"gridH":724,"gridW":571,"offset":3096732,"bytes":70272,"widthMM":90.33,"heightMM":114.54,"areaCM2":58.93,"radiusMM":21.47,"atlas":[0.00146484375,0.156005859375,0.105712890625,0.288330078125],"hi":"hi/w095.jpg","ink_source":"PHerc0172-20251206184729-7.91um-53keV-volume-20241024131838-20251222202946-timesformer_scroll5_november19-tile64-stride16-ds8.jpg","mesh_source":"20251206184729-on-20241024131838-7.91um.tifxyz"}],"totalWidthMM":4564.7,"totalAreaCM2":3756.3,"vertices":527834,"step":6}
docs/ADDING_A_SCROLL.md CHANGED
@@ -65,6 +65,7 @@ tools/precompute_template.py a starting point for turning traced windings
65
  | `voxelMM` | Scan voxel size in millimetres. Meshes in voxel units are scaled by it. |
66
  | `base` | Optional folder that asset paths are relative to, itself relative to the manifest. Registry manifests use `"../../"` to reach `data/`. |
67
  | `geometry.format` | `mesh` (OBJ or PLY per winding) or `grid-int16` (the packed format `tools/build.py` writes; registry only). |
 
68
  | `geometry.units` | `voxels` (default) or `mm`. |
69
  | `geometry.axis` | `z` (default: the scan convention, roll axis along z) or `y`. The page centres the roll on its bounding box. |
70
  | `geometry.flipV` | Default `true`: OBJ and PLY have v pointing up, so the image's top row is v = 1. Set `false` if your v points down. |
 
65
  | `voxelMM` | Scan voxel size in millimetres. Meshes in voxel units are scaled by it. |
66
  | `base` | Optional folder that asset paths are relative to, itself relative to the manifest. Registry manifests use `"../../"` to reach `data/`. |
67
  | `geometry.format` | `mesh` (OBJ or PLY per winding) or `grid-int16` (the packed format `tools/build.py` writes; registry only). |
68
+ | `geometry.lite` | Optional, `grid-int16` only: `{ "index", "bin", "binPacked" }` of a coarser copy of the mesh (`python tools/build.py --coarsen 2 data/<scroll>`) that phones load instead. `?mesh=full` or `?mesh=lite` overrides. |
69
  | `geometry.units` | `voxels` (default) or `mm`. |
70
  | `geometry.axis` | `z` (default: the scan convention, roll axis along z) or `y`. The page centres the roll on its bounding box. |
71
  | `geometry.flipV` | Default `true`: OBJ and PLY have v pointing up, so the image's top row is v = 1. Set `false` if your v points down. |
lib/manifest.js CHANGED
@@ -107,6 +107,12 @@ export function validateManifest(m, opts = {}) {
107
  ref(g.index, 'geometry.index', ['json']);
108
  ref(g.bin, 'geometry.bin', ['bin']);
109
  if (g.binPacked !== undefined) ref(g.binPacked, 'geometry.binPacked', ['gz']);
 
 
 
 
 
 
110
  }
111
  if (g.format === 'mesh') {
112
  if (g.units !== undefined && !['voxels', 'mm'].includes(g.units)) E('"geometry.units" must be "voxels" or "mm".');
 
107
  ref(g.index, 'geometry.index', ['json']);
108
  ref(g.bin, 'geometry.bin', ['bin']);
109
  if (g.binPacked !== undefined) ref(g.binPacked, 'geometry.binPacked', ['gz']);
110
+ if (g.lite !== undefined) {
111
+ const l = g.lite || {};
112
+ ref(l.index, 'geometry.lite.index', ['json']);
113
+ ref(l.bin, 'geometry.lite.bin', ['bin']);
114
+ if (l.binPacked !== undefined) ref(l.binPacked, 'geometry.lite.binPacked', ['gz']);
115
+ }
116
  }
117
  if (g.format === 'mesh') {
118
  if (g.units !== undefined && !['voxels', 'mm'].includes(g.units)) E('"geometry.units" must be "voxels" or "mm".');
scrolls/PHerc0172/manifest.json CHANGED
@@ -10,7 +10,15 @@
10
  "index": "data/PHerc0172/scroll.json",
11
  "bin": "data/PHerc0172/scroll.bin",
12
  "sizeHint": 12492840,
13
- "source": "Vesuvius Challenge 7.91 µm tifxyz meshes, decimated by tools/build.py"
 
 
 
 
 
 
 
 
14
  },
15
  "windings": [
16
  "w052",
@@ -99,4 +107,4 @@
99
  "notes": "Meshes, X-ray and ink images come only from the open data bucket vesuvius-challenge-open-data (s3://vesuvius-challenge-open-data/PHerc0172/), licensed CC BY-NC 4.0: attribution, non-commercial use. This page shows images only: no transcriptions or readings of the text."
100
  },
101
  "notes": "Segment ids w001 and up are ours, ordered by median radius (innermost first); scroll.json keeps each source segment."
102
- }
 
10
  "index": "data/PHerc0172/scroll.json",
11
  "bin": "data/PHerc0172/scroll.bin",
12
  "sizeHint": 12492840,
13
+ "source": "Vesuvius Challenge 7.91 µm tifxyz meshes, decimated by tools/build.py",
14
+ "lite": {
15
+ "index": "data/PHerc0172/scroll_lite.json",
16
+ "bin": "data/PHerc0172/scroll_lite.bin",
17
+ "binPacked": "data/PHerc0172/scroll_lite.i16p.gz",
18
+ "sizeHint": 3167004,
19
+ "packedSizeHint": 1513032,
20
+ "source": "the same meshes at half the sampling (tools/build.py --coarsen 2), for phones"
21
+ }
22
  },
23
  "windings": [
24
  "w052",
 
107
  "notes": "Meshes, X-ray and ink images come only from the open data bucket vesuvius-challenge-open-data (s3://vesuvius-challenge-open-data/PHerc0172/), licensed CC BY-NC 4.0: attribution, non-commercial use. This page shows images only: no transcriptions or readings of the text."
108
  },
109
  "notes": "Segment ids w001 and up are ours, ordered by median radius (innermost first); scroll.json keeps each source segment."
110
+ }
tools/build.py CHANGED
@@ -8,6 +8,12 @@ Outputs:
8
  scroll.json manifest: per-winding grid sizes, byte offsets, physical sizes, atlas rects, sources
9
  atlas_ink.jpg, atlas_ct.jpg every winding packed at one physical scale (grayscale)
10
  hi/wNNN.jpg per-winding Vesuvius Challenge ink preview for the close-up view
 
 
 
 
 
 
11
  """
12
  import glob
13
  import http.client
@@ -35,7 +41,7 @@ CELL_MM = 20 * VOX_MM # tifxyz scale 0.05: one grid cell is 20 voxels
35
  CT_RES = os.environ.get("UNROLL_CT_RES", "9.362um") # surface volume for the X-ray layer (any scan: it is a UV texture)
36
  NO_INK = os.environ.get("UNROLL_NO_INK") == "1"
37
  RENUMBER = os.environ.get("UNROLL_RENUMBER") == "1" # name the windings w001.. by radius, innermost first
38
- STEP = 3 # grid decimation for the browser mesh
39
  PPMM = float(os.environ.get("UNROLL_PPMM", "7.5")) # atlas pixels per mm (lowered for long scrolls)
40
  ATLAS = 4096
41
  PAD = 6
@@ -281,11 +287,41 @@ def main():
281
  "totalWidthMM": round(sum(wi["widthMM"] for wi in wins), 1),
282
  "totalAreaCM2": round(sum(wi["areaCM2"] for wi in wins), 1),
283
  "vertices": int(offset // 6),
 
284
  }
285
  json.dump(manifest, open(f"{OUT}/scroll.json", "w"), separators=(",", ":"))
286
  print("vertices", manifest["vertices"], "bin MB", offset / 1e6, "strip m", manifest["totalWidthMM"] / 1000,
287
  "area cm2", manifest["totalAreaCM2"])
288
 
289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  if __name__ == "__main__":
291
- main()
 
 
 
 
8
  scroll.json manifest: per-winding grid sizes, byte offsets, physical sizes, atlas rects, sources
9
  atlas_ink.jpg, atlas_ct.jpg every winding packed at one physical scale (grayscale)
10
  hi/wNNN.jpg per-winding Vesuvius Challenge ink preview for the close-up view
11
+
12
+ Coarseness: UNROLL_STEP sets the grid step of a full build (default 3). A lighter copy of a built mesh, for phones
13
+ and low-power devices, needs no raw downloads:
14
+ python tools/build.py --coarsen 2 data/PHerc0172 writes scroll_lite.bin, scroll_lite.json, scroll_lite.i16p.gz
15
+ It keeps every 2nd sampled row and column (plus the last ones), so the UV mapping (rowIdx, colIdx over the same
16
+ gridH, gridW), the atlases, the ink layers and the flat layout are unchanged.
17
  """
18
  import glob
19
  import http.client
 
41
  CT_RES = os.environ.get("UNROLL_CT_RES", "9.362um") # surface volume for the X-ray layer (any scan: it is a UV texture)
42
  NO_INK = os.environ.get("UNROLL_NO_INK") == "1"
43
  RENUMBER = os.environ.get("UNROLL_RENUMBER") == "1" # name the windings w001.. by radius, innermost first
44
+ STEP = int(os.environ.get("UNROLL_STEP", "3")) # grid decimation for the browser mesh (larger is coarser)
45
  PPMM = float(os.environ.get("UNROLL_PPMM", "7.5")) # atlas pixels per mm (lowered for long scrolls)
46
  ATLAS = 4096
47
  PAD = 6
 
287
  "totalWidthMM": round(sum(wi["widthMM"] for wi in wins), 1),
288
  "totalAreaCM2": round(sum(wi["areaCM2"] for wi in wins), 1),
289
  "vertices": int(offset // 6),
290
+ "step": STEP,
291
  }
292
  json.dump(manifest, open(f"{OUT}/scroll.json", "w"), separators=(",", ":"))
293
  print("vertices", manifest["vertices"], "bin MB", offset / 1e6, "strip m", manifest["totalWidthMM"] / 1000,
294
  "area cm2", manifest["totalAreaCM2"])
295
 
296
 
297
+ def coarsen(folder, k, name="scroll_lite"):
298
+ """Keep every k-th sampled row and column of each winding (always the first and last) of a built mesh."""
299
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
300
+ from pack_bin import pack
301
+ man = json.load(open(f"{folder}/scroll.json"))
302
+ raw = np.fromfile(f"{folder}/scroll.bin", "<i2")
303
+ blobs, offset, wins = [], 0, []
304
+ for w in man["windings"]:
305
+ R, C = w["rows"], w["cols"]
306
+ a = raw[w["offset"] // 2:(w["offset"] + w["bytes"]) // 2].reshape(R, C, 3)
307
+ ri = sorted(set(range(0, R, k)) | {R - 1})
308
+ ci = sorted(set(range(0, C, k)) | {C - 1})
309
+ b = np.ascontiguousarray(a[np.ix_(ri, ci)]).astype("<i2").tobytes()
310
+ blobs.append(b)
311
+ wins.append({**w, "rows": len(ri), "cols": len(ci), "rowIdx": [w["rowIdx"][i] for i in ri],
312
+ "colIdx": [w["colIdx"][i] for i in ci], "offset": offset, "bytes": len(b)})
313
+ offset += len(b)
314
+ data = b"".join(blobs)
315
+ out = {**man, "windings": wins, "vertices": int(offset // 6), "step": man.get("step", 3) * k}
316
+ open(f"{folder}/{name}.bin", "wb").write(data)
317
+ open(f"{folder}/{name}.i16p.gz", "wb").write(pack(data))
318
+ json.dump(out, open(f"{folder}/{name}.json", "w"), separators=(",", ":"))
319
+ print("vertices", man["vertices"], "->", out["vertices"], "bin bytes", len(raw) * 2, "->", len(data),
320
+ "packed", os.path.getsize(f"{folder}/{name}.i16p.gz"))
321
+
322
+
323
  if __name__ == "__main__":
324
+ if len(sys.argv) == 4 and sys.argv[1] == "--coarsen":
325
+ coarsen(sys.argv[3].rstrip("/"), int(sys.argv[2]))
326
+ else:
327
+ main()