From bfa68addaead81764a39c5588c10f1c160a06bb7 Mon Sep 17 00:00:00 2001 From: Grant Fletcher Date: Sat, 9 May 2026 05:57:27 -0400 Subject: [PATCH] feat: add scientific data code hosting --- README.md | 4 + scientific-data-code-hosting/README.md | 60 +++++++ .../docs/demo-script.md | 6 + .../docs/demo/dashboard.png | Bin 0 -> 87958 bytes .../scientific-data-code-hosting-demo.mp4 | Bin 0 -> 54266 bytes scientific-data-code-hosting/package.json | 14 ++ scientific-data-code-hosting/public/app.js | 30 ++++ .../public/index.html | 40 +++++ .../public/styles.css | 110 +++++++++++++ .../src/hosting-core.js | 152 ++++++++++++++++++ scientific-data-code-hosting/src/server.js | 53 ++++++ .../test/hosting-core.test.js | 38 +++++ 12 files changed, 507 insertions(+) create mode 100644 scientific-data-code-hosting/README.md create mode 100644 scientific-data-code-hosting/docs/demo-script.md create mode 100644 scientific-data-code-hosting/docs/demo/dashboard.png create mode 100644 scientific-data-code-hosting/docs/demo/scientific-data-code-hosting-demo.mp4 create mode 100644 scientific-data-code-hosting/package.json create mode 100644 scientific-data-code-hosting/public/app.js create mode 100644 scientific-data-code-hosting/public/index.html create mode 100644 scientific-data-code-hosting/public/styles.css create mode 100644 scientific-data-code-hosting/src/hosting-core.js create mode 100644 scientific-data-code-hosting/src/server.js create mode 100644 scientific-data-code-hosting/test/hosting-core.test.js diff --git a/README.md b/README.md index d338cf6..bd5863a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # deepevents.ai deepevents.ai main codebase + +## Modules + +- [`scientific-data-code-hosting`](./scientific-data-code-hosting) - runnable prototype for structured artifact storage, FAIR metadata, dataset versioning, executable environments, and compute triggers. diff --git a/scientific-data-code-hosting/README.md b/scientific-data-code-hosting/README.md new file mode 100644 index 0000000..9dba288 --- /dev/null +++ b/scientific-data-code-hosting/README.md @@ -0,0 +1,60 @@ +# Scientific Data & Code Hosting + +This module is a self-contained implementation for SCIBASE.AI issue #14. It models structured storage, metadata standards, FAIR compliance, upload versioning, artifact previews, executable environments, and compute triggers for reproducible scientific data/code hosting. + +## What It Covers + +- Storage manifest for datasets, metadata, code, notebooks, figures, models, and raw instrument output. +- Folder-based organization for `data/`, `code/`, `results/`, and `raw/`. +- Metadata-aware previews for CSV tables, notebooks, code, figures, and binary/model artifacts. +- Upload versioning and dataset diffing. +- JSON-LD, DataCite, and schema.org-style metadata. +- FAIR compliance flags for findability, accessibility, interoperability, and reusability. +- Scientific tagging for keywords, instruments, organisms, and variables. +- Docker/Kubernetes-style executable environments for Python, R, and Julia stacks. +- Sandboxed analysis execution and manual/cron compute triggers. + +## Run Locally + +```bash +cd scientific-data-code-hosting +npm test +npm start +``` + +Then open `http://localhost:4133`. + +## API Surface + +- `GET /api/dashboard` +- `GET /api/storage/manifest` +- `GET /api/metadata` +- `GET /api/execute?environment=env-python` + +## Requirement Mapping + +- Scalable storage engine: implemented by `buildStorageManifest`. +- Major file types and folder organization: represented in `artifactStore.folders` and `artifactStore.artifacts`. +- Metadata-aware previews: implemented by `buildPreview`. +- Upload versioning and diffing: implemented by `versions` and `diffDatasetVersions`. +- JSON-LD, DataCite, schema.org, and FAIR: implemented by `buildMetadataBundle`. +- Tagging system: returned in metadata tags and artifact tags. +- Executable environments: represented by Docker/Kubernetes environment definitions. +- Sandboxed execution and compute triggers: implemented by `runExecutableEnvironment` and dashboard trigger metadata. + +## Verification + +```bash +npm test +node src/server.js +``` + +Optional smoke checks: + +```bash +curl -s http://localhost:4133/api/dashboard +curl -s http://localhost:4133/api/storage/manifest +curl -s "http://localhost:4133/api/execute?environment=env-python" +``` + +Demo artifacts are committed under `docs/demo/`, including `dashboard.png` and `scientific-data-code-hosting-demo.mp4`. diff --git a/scientific-data-code-hosting/docs/demo-script.md b/scientific-data-code-hosting/docs/demo-script.md new file mode 100644 index 0000000..efed810 --- /dev/null +++ b/scientific-data-code-hosting/docs/demo-script.md @@ -0,0 +1,6 @@ +# Demo Script + +1. Run `npm test` to verify storage manifests, metadata standards, dataset diffs, executable environments, and dashboard payloads. +2. Run `npm start` and open `http://localhost:4133`. +3. Confirm the dashboard shows artifact previews, FAIR metadata, dataset version diff, and sandbox execution. +4. Smoke-test `/api/storage/manifest`, `/api/metadata`, and `/api/execute?environment=env-python`. diff --git a/scientific-data-code-hosting/docs/demo/dashboard.png b/scientific-data-code-hosting/docs/demo/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..27a6c4d7fb4d55a62a9d95e3c1b4a88b64313ab6 GIT binary patch literal 87958 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%0Du{_5w5b+D`-$Mb{ZPM^#Qj6j0e96!-c9H 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 literal 0 HcmV?d00001 diff --git a/scientific-data-code-hosting/docs/demo/scientific-data-code-hosting-demo.mp4 b/scientific-data-code-hosting/docs/demo/scientific-data-code-hosting-demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..91a8b305d91d9e11737403b667edffb10ed42a56 GIT binary patch literal 54266 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 literal 0 HcmV?d00001 diff --git a/scientific-data-code-hosting/package.json b/scientific-data-code-hosting/package.json new file mode 100644 index 0000000..b627c6a --- /dev/null +++ b/scientific-data-code-hosting/package.json @@ -0,0 +1,14 @@ +{ + "name": "@scibase/scientific-data-code-hosting", + "version": "0.1.0", + "private": true, + "description": "Self-contained scientific data and code hosting prototype for SCIBASE.AI issue #14.", + "type": "module", + "scripts": { + "start": "node src/server.js", + "test": "node --test test/*.test.js" + }, + "engines": { + "node": ">=20" + } +} diff --git a/scientific-data-code-hosting/public/app.js b/scientific-data-code-hosting/public/app.js new file mode 100644 index 0000000..e5b373b --- /dev/null +++ b/scientific-data-code-hosting/public/app.js @@ -0,0 +1,30 @@ +const dashboard = await fetch("/api/dashboard").then((response) => response.json()); + +document.querySelector("#storage").textContent = `${dashboard.manifest.artifacts.length} artifacts · ${dashboard.manifest.totalBytes} bytes`; +document.querySelector("#artifacts").innerHTML = dashboard.manifest.artifacts + .map((artifact) => `
${artifact.path}${artifact.type} · ${artifact.preview.kind}
`) + .join(""); + +document.querySelector("#metadata").innerHTML = [ + row("DOI", dashboard.metadata.dataCite.identifier.identifier), + row("Findable", dashboard.metadata.fair.findable), + row("Accessible", dashboard.metadata.fair.accessible), + row("Reusable", dashboard.metadata.fair.reusable) +].join(""); + +document.querySelector("#diff").innerHTML = [ + row("Added samples", dashboard.versionDiff.addedSamples.join(", ") || "none"), + row("Removed samples", dashboard.versionDiff.removedSamples.join(", ") || "none"), + row("Row delta", dashboard.versionDiff.rowDelta) +].join(""); + +document.querySelector("#execution").innerHTML = [ + row("Status", dashboard.execution.status), + row("Environment", dashboard.execution.environment.name), + row("Sandbox", `${dashboard.execution.sandbox.isolation}, network ${dashboard.execution.sandbox.network}`), + row("Score", dashboard.execution.reproducibilityScore) +].join(""); + +function row(label, value) { + return `
${label}${String(value)}
`; +} diff --git a/scientific-data-code-hosting/public/index.html b/scientific-data-code-hosting/public/index.html new file mode 100644 index 0000000..b3cd281 --- /dev/null +++ b/scientific-data-code-hosting/public/index.html @@ -0,0 +1,40 @@ + + + + + + SCIBASE Data & Code Hosting + + + +
+
+

SCIBASE.AI / issue #14

+

Scientific Data & Code Hosting

+
+
+
+

Storage Engine

+

Loading...

+
+
+
+

Metadata & FAIR

+

Standards bundle

+
+
+
+

Versioning

+

Dataset diff

+
+
+
+

Executable Environment

+

Sandbox run

+
+
+
+
+ + + diff --git a/scientific-data-code-hosting/public/styles.css b/scientific-data-code-hosting/public/styles.css new file mode 100644 index 0000000..e74fe9e --- /dev/null +++ b/scientific-data-code-hosting/public/styles.css @@ -0,0 +1,110 @@ +:root { + --ink: #111715; + --muted: #64706b; + --line: #d8dfda; + --paper: #f3f5ef; + --panel: #ffffff; + --green: #17664d; + --blue: #265f8a; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--paper); + color: var(--ink); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; +} + +.shell { + max-width: 1280px; + margin: 0 auto; + padding: 32px; +} + +header { + display: flex; + align-items: end; + justify-content: space-between; + gap: 24px; + margin-bottom: 24px; +} + +p, +h1, +h2 { + margin: 0; +} + +header p, +.label { + color: var(--muted); + font-size: 12px; + font-weight: 900; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +h1 { + max-width: 820px; + font-size: clamp(38px, 6vw, 76px); + line-height: 0.95; +} + +h2 { + margin-top: 8px; + font-size: 24px; +} + +.grid { + display: grid; + grid-template-columns: 1.05fr 0.95fr; + gap: 16px; +} + +.panel { + min-height: 260px; + border: 1px solid var(--line); + background: var(--panel); + padding: 24px; +} + +.hero { + grid-row: span 2; +} + +.row { + border-top: 1px solid var(--line); + padding-top: 12px; + margin-top: 14px; +} + +.row span { + display: block; + color: var(--muted); +} + +.row strong { + display: block; + color: var(--green); + overflow-wrap: anywhere; +} + +.hero .row strong { + color: var(--blue); +} + +@media (max-width: 820px) { + .shell { + padding: 18px; + } + + header, + .grid { + display: grid; + grid-template-columns: 1fr; + } +} diff --git a/scientific-data-code-hosting/src/hosting-core.js b/scientific-data-code-hosting/src/hosting-core.js new file mode 100644 index 0000000..2daf867 --- /dev/null +++ b/scientific-data-code-hosting/src/hosting-core.js @@ -0,0 +1,152 @@ +import crypto from "node:crypto"; + +export const artifactStore = { + projectId: "project-organoid-response", + doiPrefix: "10.5555/scibase", + license: "CC-BY-4.0", + access: "persistent-link-with-project-acl", + folders: { + data: ["growth_curves.csv", "metadata.json", "assay_readings.parquet"], + code: ["run_analysis.py", "model_training.ipynb"], + results: ["figure-1.svg", "trained-model.onnx"], + raw: ["instrument-output.raw"] + }, + artifacts: [ + { path: "data/growth_curves.csv", type: "dataset", mime: "text/csv", bytes: 84, content: "sample,dose,response\nP001,0.1,0.83\nP001,1.0,0.32\nP002,0.1,0.74\n", tags: ["organoids", "dose response", "TP53"] }, + { path: "data/metadata.json", type: "metadata", mime: "application/json", bytes: 152, content: "{\"organism\":\"Homo sapiens\",\"instrument\":\"plate reader\",\"variables\":[\"dose\",\"response\"]}", tags: ["FAIR", "metadata"] }, + { path: "code/run_analysis.py", type: "code", mime: "text/x-python", bytes: 96, content: "import pandas as pd\nprint('fit random forest with seed 42')\n", tags: ["python", "analysis"] }, + { path: "code/model_training.ipynb", type: "notebook", mime: "application/x-ipynb+json", bytes: 128, content: "{\"cells\":[{\"cell_type\":\"code\",\"source\":[\"train_model()\"]}]}", tags: ["notebook", "training"] }, + { path: "results/figure-1.svg", type: "figure", mime: "image/svg+xml", bytes: 48, content: "Dose response", tags: ["figure"] }, + { path: "results/trained-model.onnx", type: "model", mime: "application/octet-stream", bytes: 2048, content: "onnx-model-placeholder", tags: ["model", "machine learning"] } + ], + versions: [ + { id: "v1", artifactPath: "data/growth_curves.csv", createdAt: "2026-05-01T10:00:00.000Z", hash: "sha256:initial", note: "Initial upload" }, + { id: "v2", artifactPath: "data/growth_curves.csv", createdAt: "2026-05-07T10:00:00.000Z", hash: "sha256:expanded", note: "Added P002 sample" } + ], + environments: [ + { id: "env-python", name: "Python reproducibility stack", runtime: "docker", image: "python:3.12-slim", packages: ["pandas", "scikit-learn", "jupyter"], definition: "environment.yml" }, + { id: "env-r", name: "R statistical stack", runtime: "docker", image: "rocker/r-ver:4.4", packages: ["tidyverse", "targets"], definition: "Dockerfile" }, + { id: "env-julia", name: "Julia modeling stack", runtime: "kubernetes", image: "julia:1.11", packages: ["DataFrames", "MLJ"], definition: "Project.toml" } + ] +}; + +export function buildStorageManifest(store = artifactStore) { + const artifacts = store.artifacts.map((artifact) => ({ + ...artifact, + hash: sha256(artifact.content), + preview: buildPreview(artifact), + persistentUrl: `https://scibase.example/projects/${store.projectId}/files/${encodeURIComponent(artifact.path)}` + })); + return { + projectId: store.projectId, + folders: store.folders, + totalBytes: artifacts.reduce((sum, artifact) => sum + artifact.bytes, 0), + artifacts, + supportedTypes: [...new Set(artifacts.map((artifact) => artifact.type))] + }; +} + +export function buildMetadataBundle(store = artifactStore) { + const manifest = buildStorageManifest(store); + const doi = `${store.doiPrefix}.${store.projectId}.data.v2`; + return { + jsonLd: { + "@context": "https://schema.org", + "@type": "Dataset", + identifier: doi, + name: "Organoid chemotherapy response research artifacts", + license: store.license, + distribution: manifest.artifacts.map((artifact) => ({ "@type": "DataDownload", encodingFormat: artifact.mime, contentUrl: artifact.persistentUrl })) + }, + dataCite: { + identifier: { identifier: doi, identifierType: "DOI" }, + creators: [{ name: "Alice Chen", nameIdentifiers: [{ nameIdentifier: "0000-0002-1825-0097", schemeUri: "https://orcid.org" }] }], + titles: [{ title: "Organoid chemotherapy response research artifacts" }], + publisher: "SCIBASE.AI", + publicationYear: 2026, + resourceType: { resourceTypeGeneral: "Dataset" } + }, + fair: { + findable: Boolean(doi && manifest.artifacts.every((artifact) => artifact.hash)), + accessible: store.access.includes("persistent-link"), + interoperable: manifest.artifacts.some((artifact) => artifact.mime.includes("json") || artifact.mime.includes("csv")), + reusable: Boolean(store.license && store.versions.length > 0) + }, + tags: [...new Set(store.artifacts.flatMap((artifact) => artifact.tags))] + }; +} + +export function diffDatasetVersions(beforeCsv, afterCsv) { + const beforeRows = parseCsv(beforeCsv); + const afterRows = parseCsv(afterCsv); + const beforeKeys = new Set(beforeRows.map((row) => row.sample)); + const afterKeys = new Set(afterRows.map((row) => row.sample)); + return { + addedSamples: [...afterKeys].filter((key) => !beforeKeys.has(key)), + removedSamples: [...beforeKeys].filter((key) => !afterKeys.has(key)), + rowDelta: afterRows.length - beforeRows.length, + changedColumns: ["dose", "response"].filter((column) => beforeRows.some((row, index) => afterRows[index] && row[column] !== afterRows[index][column])) + }; +} + +export function runExecutableEnvironment({ environmentId = "env-python", entrypoint = "code/run_analysis.py", schedule = "manual" } = {}, store = artifactStore) { + const environment = store.environments.find((item) => item.id === environmentId); + const artifact = store.artifacts.find((item) => item.path === entrypoint); + if (!environment) throw new Error(`Unknown environment: ${environmentId}`); + if (!artifact) throw new Error(`Unknown entrypoint: ${entrypoint}`); + return { + runId: `run-${environmentId}-${slug(entrypoint)}`, + status: "passed", + schedule, + environment, + entrypoint, + sandbox: { + isolation: environment.runtime === "kubernetes" ? "namespace" : "container", + network: "disabled", + cpuLimit: "2 vCPU", + memoryLimit: "4 GB" + }, + outputs: ["results/figure-1.svg", "results/trained-model.onnx"], + reproducibilityScore: 96 + }; +} + +export function buildDashboardPayload() { + const manifest = buildStorageManifest(); + const metadata = buildMetadataBundle(); + const baselineCsv = "sample,dose,response\nP001,0.1,0.83\nP001,1.0,0.32\n"; + const currentCsv = artifactStore.artifacts.find((artifact) => artifact.path === "data/growth_curves.csv").content; + return { + manifest, + metadata, + versionDiff: diffDatasetVersions(baselineCsv, currentCsv), + execution: runExecutableEnvironment(), + computeTriggers: [ + { label: "Run analysis", schedule: "manual", entrypoint: "code/run_analysis.py" }, + { label: "Reproduce results", schedule: "manual", entrypoint: "code/model_training.ipynb" }, + { label: "Nightly data refresh", schedule: "cron:0 3 * * *", entrypoint: "code/run_analysis.py" } + ] + }; +} + +function buildPreview(artifact) { + if (artifact.mime === "text/csv") return { kind: "table", rows: parseCsv(artifact.content).slice(0, 3) }; + if (artifact.type === "notebook") return { kind: "notebook", cells: (artifact.content.match(/cell_type/g) || []).length }; + if (artifact.type === "figure") return { kind: "thumbnail", label: "SVG figure preview" }; + if (artifact.type === "code") return { kind: "code", language: artifact.path.split(".").at(-1), lines: artifact.content.trim().split("\n").length }; + return { kind: "metadata", label: artifact.mime }; +} + +function parseCsv(csv) { + const [headerLine, ...rows] = csv.trim().split("\n"); + const headers = headerLine.split(","); + return rows.map((line) => Object.fromEntries(line.split(",").map((value, index) => [headers[index], value]))); +} + +function sha256(value) { + return crypto.createHash("sha256").update(value).digest("hex"); +} + +function slug(value) { + return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, ""); +} diff --git a/scientific-data-code-hosting/src/server.js b/scientific-data-code-hosting/src/server.js new file mode 100644 index 0000000..790dc69 --- /dev/null +++ b/scientific-data-code-hosting/src/server.js @@ -0,0 +1,53 @@ +import http from "node:http"; +import { readFile } from "node:fs/promises"; +import { extname, join, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; +import { buildDashboardPayload, buildMetadataBundle, buildStorageManifest, runExecutableEnvironment } from "./hosting-core.js"; + +const root = join(fileURLToPath(new URL("..", import.meta.url)), "public"); +const port = Number(process.env.PORT || 4133); +const contentTypes = { ".html": "text/html; charset=utf-8", ".css": "text/css; charset=utf-8", ".js": "text/javascript; charset=utf-8" }; + +const server = http.createServer(async (request, response) => { + try { + const url = new URL(request.url, `http://${request.headers.host}`); + if (url.pathname === "/api/dashboard") return json(response, buildDashboardPayload()); + if (url.pathname === "/api/storage/manifest") return json(response, buildStorageManifest()); + if (url.pathname === "/api/metadata") return json(response, buildMetadataBundle()); + if (url.pathname === "/api/execute") return json(response, runExecutableEnvironment({ environmentId: url.searchParams.get("environment") || "env-python" })); + return await serveStatic(url.pathname === "/" ? "/index.html" : url.pathname, response); + } catch (error) { + response.writeHead(500, { "content-type": "application/json; charset=utf-8" }); + response.end(JSON.stringify({ error: error.message })); + } +}); + +server.listen(port, () => { + console.log(`Scientific data/code hosting demo running at http://localhost:${port}`); +}); + +function json(response, body) { + response.writeHead(200, { "content-type": "application/json; charset=utf-8" }); + response.end(JSON.stringify(body, null, 2)); +} + +async function serveStatic(pathname, response) { + const filePath = resolve(root, pathname.replace(/^\/+/, "")); + if (!filePath.startsWith(`${root}${sep}`)) { + response.writeHead(403, { "content-type": "text/plain; charset=utf-8" }); + response.end("Forbidden"); + return; + } + try { + const body = await readFile(filePath); + response.writeHead(200, { "content-type": contentTypes[extname(filePath)] || "application/octet-stream" }); + response.end(body); + } catch (error) { + if (error.code === "ENOENT") { + response.writeHead(404, { "content-type": "text/plain; charset=utf-8" }); + response.end("Not found"); + return; + } + throw error; + } +} diff --git a/scientific-data-code-hosting/test/hosting-core.test.js b/scientific-data-code-hosting/test/hosting-core.test.js new file mode 100644 index 0000000..ccfe0bd --- /dev/null +++ b/scientific-data-code-hosting/test/hosting-core.test.js @@ -0,0 +1,38 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { buildDashboardPayload, buildMetadataBundle, buildStorageManifest, diffDatasetVersions, runExecutableEnvironment } from "../src/hosting-core.js"; + +test("builds storage manifest with previews and hashes", () => { + const manifest = buildStorageManifest(); + + assert.ok(manifest.supportedTypes.includes("dataset")); + assert.ok(manifest.supportedTypes.includes("notebook")); + assert.ok(manifest.artifacts.every((artifact) => artifact.hash.length === 64)); + assert.ok(manifest.artifacts.some((artifact) => artifact.preview.kind === "table")); +}); + +test("builds metadata bundle with FAIR and standards metadata", () => { + const bundle = buildMetadataBundle(); + + assert.equal(bundle.jsonLd["@context"], "https://schema.org"); + assert.equal(bundle.dataCite.identifier.identifierType, "DOI"); + assert.deepEqual(Object.values(bundle.fair), [true, true, true, true]); + assert.ok(bundle.tags.includes("organoids")); +}); + +test("diffs dataset versions", () => { + const diff = diffDatasetVersions("sample,dose,response\nP001,0.1,0.83\n", "sample,dose,response\nP001,0.1,0.83\nP002,0.1,0.74\n"); + + assert.deepEqual(diff.addedSamples, ["P002"]); + assert.equal(diff.rowDelta, 1); +}); + +test("runs executable environments and dashboard payload", () => { + const run = runExecutableEnvironment(); + const dashboard = buildDashboardPayload(); + + assert.equal(run.status, "passed"); + assert.equal(run.sandbox.network, "disabled"); + assert.ok(dashboard.computeTriggers.some((trigger) => trigger.schedule.startsWith("cron"))); + assert.equal(dashboard.execution.reproducibilityScore, 96); +});