Spaces:
Running
Running
Add connect.json and CONNECT.md, which the Connect panel links to (Scrolls 45836d9)
Browse files- CONNECT.md +135 -0
- connect.json +31 -0
CONNECT.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Connect your tool: Fiber Checker
|
| 2 |
+
|
| 3 |
+
The Space reads open-data meshes and CT by URL and keeps none of it; here are the same sources for your own tools, and the page's API and MCP server, which checks any segment with the free judge.
|
| 4 |
+
|
| 5 |
+
Checked 2026-10-26. Generated from `connect.json` by `kit spaceconnect` in [ChaseHendrick/Scrolls](https://github.com/ChaseHendrick/Scrolls).
|
| 6 |
+
|
| 7 |
+
## A traced segment's mesh: PHerc0500P2 z_dbg_gen_00440 on the 2.215 um scan
|
| 8 |
+
|
| 9 |
+
`https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/segments/20250611171318-z_dbg_gen_00440_inp_hr/mesh/20250611171318-on-20250526151718-2.215um.tifxyz/`
|
| 10 |
+
|
| 11 |
+
License: CC BY-NC 4.0 (Vesuvius Challenge open data). x.tif, y.tif and z.tif in the scan's level-0 voxels. fiber.tif from a check has the same grid, so it lines up vertex for vertex.
|
| 12 |
+
|
| 13 |
+
### Python (numpy, tifffile) (tested 2026-10-24)
|
| 14 |
+
|
| 15 |
+
```python
|
| 16 |
+
# pip install numpy tifffile
|
| 17 |
+
import io, json, urllib.request
|
| 18 |
+
import numpy as np, tifffile
|
| 19 |
+
|
| 20 |
+
T = "https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/segments/20250611171318-z_dbg_gen_00440_inp_hr/mesh/20250611171318-on-20250526151718-2.215um.tifxyz"
|
| 21 |
+
meta = json.load(urllib.request.urlopen(T + "/meta.json")) # scale, bbox, format
|
| 22 |
+
get = lambda c: tifffile.imread(io.BytesIO(urllib.request.urlopen(f"{T}/{c}.tif").read()))
|
| 23 |
+
xyz = np.stack([get(c) for c in "xyz"], -1) # xyz[i, j] = (x, y, z) in scan voxels; -1 = no surface
|
| 24 |
+
```
|
| 25 |
+
|
| 26 |
+
## The CT that mesh is on, PHerc0500P2 2.215 um
|
| 27 |
+
|
| 28 |
+
`https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr`
|
| 29 |
+
|
| 30 |
+
License: CC BY-NC 4.0 (Vesuvius Challenge open data). Read live from the open-data bucket, never copied here. The free judge reads level 2 of the 2.2 to 2.4 um scans (about 9 um).
|
| 31 |
+
|
| 32 |
+
### Python (zarr) (tested 2026-10-24)
|
| 33 |
+
|
| 34 |
+
```python
|
| 35 |
+
# pip install "zarr>=3" fsspec aiohttp
|
| 36 |
+
import zarr
|
| 37 |
+
|
| 38 |
+
root = zarr.open_group("https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr", mode="r") # OME-Zarr, zarr v2
|
| 39 |
+
a = root["2"] # level 0 is full resolution; level L is 2**L times coarser
|
| 40 |
+
print(a.shape, a.dtype, a.chunks)
|
| 41 |
+
block = a[1500:1564, 2000:2064, 3000:3064] # (z, y, x); reads only the chunks it touches
|
| 42 |
+
```
|
| 43 |
+
|
| 44 |
+
### villa's vesuvius package (tested 2026-10-24)
|
| 45 |
+
|
| 46 |
+
```python
|
| 47 |
+
# pip install "vesuvius[volume-only]"
|
| 48 |
+
from vesuvius import Volume
|
| 49 |
+
|
| 50 |
+
v = Volume(type="zarr", path="https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr/2") # one pyramid level
|
| 51 |
+
block = v[1500:1564, 2000:2064, 3000:3064]
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
### VC3D (from villa's source)
|
| 55 |
+
|
| 56 |
+
```text
|
| 57 |
+
In VC3D (villa's volume-cartographer), open or create a project, then
|
| 58 |
+
File > Attach Remote Zarr... and paste:
|
| 59 |
+
|
| 60 |
+
https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr
|
| 61 |
+
|
| 62 |
+
It accepts http, https and s3 OME-Zarr roots.
|
| 63 |
+
```
|
| 64 |
+
|
| 65 |
+
### neuroglancer (tested 2026-10-24)
|
| 66 |
+
|
| 67 |
+
```text
|
| 68 |
+
https://neuroglancer-demo.appspot.com/#!%7B%22layers%22%3A%5B%7B%22type%22%3A%22image%22%2C%22source%22%3A%22zarr%3A%2F%2Fhttps%3A%2F%2Fvesuvius-challenge-open-data.s3.us-east-1.amazonaws.com%2FPHerc0500P2%2Fvolumes%2F20250526151718-2.215um-0.4m-111keV-masked.zarr%2F%22%2C%22name%22%3A%22The%20CT%20that%20mesh%20is%20on%2C%20PHerc0500P2%202.215%20um%22%7D%5D%2C%22layout%22%3A%224panel%22%7D
|
| 69 |
+
```
|
| 70 |
+
|
| 71 |
+
### curl (tested 2026-10-24)
|
| 72 |
+
|
| 73 |
+
```bash
|
| 74 |
+
curl -s https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr/.zattrs # OME multiscales metadata
|
| 75 |
+
curl -s https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr/2/.zarray # one level: shape, chunks, dtype, codec
|
| 76 |
+
```
|
| 77 |
+
|
| 78 |
+
## Check any segment, from code or an agent
|
| 79 |
+
|
| 80 |
+
`https://huggingface.co/spaces/SharpMeow/fiber-checker`
|
| 81 |
+
|
| 82 |
+
License: Code and weights Apache 2.0; scans and meshes CC BY-NC 4.0. check_segment (sample, segment, volume, patches) runs the free judge on the Space's CPU, about two minutes for 60 patches. Model output, not a reading.
|
| 83 |
+
|
| 84 |
+
### Python /list_scrolls (tested 2026-10-24)
|
| 85 |
+
|
| 86 |
+
```python
|
| 87 |
+
# pip install gradio_client
|
| 88 |
+
from gradio_client import Client
|
| 89 |
+
|
| 90 |
+
client = Client("SharpMeow/fiber-checker")
|
| 91 |
+
result = client.predict(api_name="/list_scrolls")
|
| 92 |
+
```
|
| 93 |
+
|
| 94 |
+
### Python /example_segments (tested 2026-10-24)
|
| 95 |
+
|
| 96 |
+
```python
|
| 97 |
+
# pip install gradio_client
|
| 98 |
+
from gradio_client import Client
|
| 99 |
+
|
| 100 |
+
client = Client("SharpMeow/fiber-checker")
|
| 101 |
+
result = client.predict(api_name="/example_segments")
|
| 102 |
+
```
|
| 103 |
+
|
| 104 |
+
### Python /list_segments (tested 2026-10-24)
|
| 105 |
+
|
| 106 |
+
```python
|
| 107 |
+
# pip install gradio_client
|
| 108 |
+
from gradio_client import Client
|
| 109 |
+
|
| 110 |
+
client = Client("SharpMeow/fiber-checker")
|
| 111 |
+
result = client.predict(sample="PHerc0343P", api_name="/list_segments")
|
| 112 |
+
```
|
| 113 |
+
|
| 114 |
+
### curl /list_scrolls (tested 2026-10-24)
|
| 115 |
+
|
| 116 |
+
```bash
|
| 117 |
+
URL=https://sharpmeow-fiber-checker.hf.space
|
| 118 |
+
EVENT=$(curl -s -X POST $URL/gradio_api/call/list_scrolls -H 'Content-Type: application/json' \
|
| 119 |
+
-d '{"data": []}' | python3 -c 'import json,sys; print(json.load(sys.stdin)["event_id"])')
|
| 120 |
+
curl -sN $URL/gradio_api/call/list_scrolls/$EVENT
|
| 121 |
+
```
|
| 122 |
+
|
| 123 |
+
### MCP (Claude, Cursor and other agents) (tested 2026-10-24)
|
| 124 |
+
|
| 125 |
+
```json
|
| 126 |
+
{
|
| 127 |
+
"mcpServers": {
|
| 128 |
+
"fiber-checker": {
|
| 129 |
+
"url": "https://sharpmeow-fiber-checker.hf.space/gradio_api/mcp/sse"
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
Tool list: https://sharpmeow-fiber-checker.hf.space/gradio_api/mcp/schema
|
| 135 |
+
```
|
connect.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "space-connect/1",
|
| 3 |
+
"space": "SharpMeow/fiber-checker",
|
| 4 |
+
"title": "Fiber Checker",
|
| 5 |
+
"checked": "2026-10-26",
|
| 6 |
+
"intro": "The Space reads open-data meshes and CT by URL and keeps none of it; here are the same sources for your own tools, and the page's API and MCP server, which checks any segment with the free judge.",
|
| 7 |
+
"sources": [
|
| 8 |
+
{"id": "mesh", "title": "A traced segment's mesh: PHerc0500P2 z_dbg_gen_00440 on the 2.215 um scan", "kind": "tifxyz",
|
| 9 |
+
"url": "https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/segments/20250611171318-z_dbg_gen_00440_inp_hr/mesh/20250611171318-on-20250526151718-2.215um.tifxyz/",
|
| 10 |
+
"license": "CC BY-NC 4.0 (Vesuvius Challenge open data)",
|
| 11 |
+
"note": "x.tif, y.tif and z.tif in the scan's level-0 voxels. fiber.tif from a check has the same grid, so it lines up vertex for vertex."},
|
| 12 |
+
{"id": "ct", "title": "The CT that mesh is on, PHerc0500P2 2.215 um", "kind": "ome-zarr",
|
| 13 |
+
"url": "https://vesuvius-challenge-open-data.s3.us-east-1.amazonaws.com/PHerc0500P2/volumes/20250526151718-2.215um-0.4m-111keV-masked.zarr",
|
| 14 |
+
"zarr_format": 2, "example": {"level": "2", "start": [1500, 2000, 3000]},
|
| 15 |
+
"license": "CC BY-NC 4.0 (Vesuvius Challenge open data)",
|
| 16 |
+
"note": "Read live from the open-data bucket, never copied here. The free judge reads level 2 of the 2.2 to 2.4 um scans (about 9 um).",
|
| 17 |
+
"browse": "https://scrollprize.org/data_browser/PHerc0500P2"},
|
| 18 |
+
{"id": "api", "title": "Check any segment, from code or an agent", "kind": "gradio-api",
|
| 19 |
+
"url": "https://huggingface.co/spaces/SharpMeow/fiber-checker",
|
| 20 |
+
"space": "SharpMeow/fiber-checker",
|
| 21 |
+
"host": "https://sharpmeow-fiber-checker.hf.space",
|
| 22 |
+
"status": "running",
|
| 23 |
+
"endpoints": [
|
| 24 |
+
{"api": "/list_scrolls", "args": {}},
|
| 25 |
+
{"api": "/example_segments", "args": {}},
|
| 26 |
+
{"api": "/list_segments", "args": {"sample": "PHerc0343P"}}
|
| 27 |
+
],
|
| 28 |
+
"license": "Code and weights Apache 2.0; scans and meshes CC BY-NC 4.0",
|
| 29 |
+
"note": "check_segment (sample, segment, volume, patches) runs the free judge on the Space's CPU, about two minutes for 60 patches. Model output, not a reading."}
|
| 30 |
+
]
|
| 31 |
+
}
|