{"page":{"title":"SlickFast News — sci-core is live","description":"Scientific charts. Same engine. Same bytes. Free. Eight types. Real log axes. Twin at .json.","theme":"teal-dark","sections":[{"type":"hero","badge":"news · #12","heading":"sci-core is live","sub":"Scientific charts. Same engine. Same bytes. Free."},{"type":"stats","items":[{"label":"Types","value":"8"},{"label":"Log axes","value":"real"},{"label":"Price","value":"$0"},{"label":"Launch","value":"soft"}]},{"type":"text","body":"sci-core is the scientific module on SlickFast. It’s not a new product — eight scientific chart types on the same deterministic engine as everything else, called the same way, priced at zero. Same rule as always: a JSON spec *is* the picture, byte for byte, forever, and the hash is on the page.\n\n**8** chart types — from scatter to volcano. **Real** log axes, including base-2 for doubling data. **$0** — free. Soft launch, callable like any other type."},{"type":"text","body":"## What’s actually built — all eight types\n- **scatter** — x/y points, linear or log\n- **errorbar** — scatter with y-error whiskers\n- **lineplot** — connected growth curves or spectra\n- **barplot** — categories × values, optional errors, log-y\n- **survival** — Kaplan–Meier, computed from raw times + censoring\n- **blandaltman** — method agreement (bias + limits)\n- **qq** — normal Q–Q\n- **volcano** — fold-change + p-value in; the `−log₁₀(p)` transform and class coloring happen in-engine\n\nScales: `linear`, `semilog-x`, `semilog-y`, `loglog`, `log` — plus `logBase: 2` for anything that moves in doublings. Fits, error bands, reference lines, and peaks wherever a type supports them.\n\n**Not built: boxplot and histogram.** They’re on the roadmap, not in the tree. Don’t claim them yet."},{"type":"text","body":"## Raw numbers in. Publication-shaped plot out.\nThe difference between this and a normal chart tool is where the statistics happen.\n\nEvery other chart service says: *compute your results, then we’ll draw them.* SlickFast says: *give us the raw data and we’ll compute Kaplan–Meier survival curves, Bland–Altman agreement plots, Q–Q distributions, and volcano plots — then render them deterministically.* A lab tech dumps raw values in one call and gets a publication-grade plot back. No R. No Python. No notebook.\n\nTo be precise about the boundary, because it matters to the people who’ll check: these are **plot-supporting statistics**. This isn’t a general statistics engine — no regressions, no hypothesis tests, and no p-value *computation* (the volcano plot takes p-values *in* and transforms them). The honest claim is stronger than the inflated one: **your plotting pipeline disappears.**"},{"type":"text","body":"## The log axes are real — and the furniture is the product\nScientists don’t read the color palette. They read the axis. What makes a chart “look log” is the **furniture**: the `10ⁿ` decade labels and the way the 2–9× ticks bunch up inside each decade. That’s the first thing a skeptical reviewer notices, and it’s built in.\n\nFor biology specifically, there’s base-2. Nature doubles — bacteria divide, cell populations span hundreds to millions, gene expression is measured in 2×, 4×, 8× fold-changes. On a standard base-10 axis those land on a sparse tick at 1, 10, 100 — and a culture that doubled eight times looks like a flat, meaningless slope.\n\n`logBase: 2` fixes it: **every doubling gets its own rung.** Eight doublings, eight visible steps. You can count generations by counting rungs. Labels default to plain numbers — 100, 200, 400, 800 — because that’s what makes the doubling *feel* real (superscript `2ⁿ` is available too). R and Python can do this, but you hand-configure the tick formatting yourself. Here it’s five characters in a spec."},{"type":"grid","charts":[{"type":"lineplot","scale":"semilog-y","logBase":10,"palette":"Cyberpunk Glow","background":"#0a0f14","title":"Base-10 — decades","xLabel":"Time (min)","yLabel":"CFU/mL","data":{"series":[{"name":"Culture","x":[0,20,40,60,80,100,120,140,160,180],"y":[120,240,510,980,2100,4300,8600,17000,35000,71000]}]}},{"type":"lineplot","scale":"semilog-y","logBase":2,"palette":"Cyberpunk Glow","background":"#0a0f14","title":"Base-2 — every doubling","xLabel":"Time (min)","yLabel":"CFU/mL","data":{"series":[{"name":"Culture","x":[0,20,40,60,80,100,120,140,160,180],"y":[120,240,510,980,2100,4300,8600,17000,35000,71000]}]}}]},{"type":"text","body":"## The engine has opinions — and that’s the point\nMost chart tools render whatever you hand them, garbage included. sci-core doesn’t.\n\n- Ask for base-3 and it doesn’t silently fail — it tells you what *is* supported.\n- Put a logBase on linear data and it doesn’t draw nonsense — it tells you to set a scale first.\n- Try more than 24 doublings and it doesn’t produce an unreadable hundred-tick axis — it steers you to base-10, where that range makes sense.\n\nIn a scientific context, a bad chart can become a wrong conclusion. This is integrity built into the tool, not a convenience feature."},{"type":"text","body":"## Audited, not just asserted\nThe in-engine math ships with a correctness record you can check, not a claim you have to trust: **26 checks, 26 green, zero dependencies.** Every reference is a published constant or hand-computed exact arithmetic.\n\n- **Bland–Altman is byte-exact** — bias and both limits of agreement match hand-worked math, down to the rendered label characters.\n- **Kaplan–Meier passes the nasty edge case** — where S(t) lands exactly on 0.5 and the median needs the standard `≤` convention to answer 2 instead of 3. That’s the case that quietly breaks naive implementations.\n- **The Q–Q probit hits a max error of 4.36×10⁻⁷** across seven published anchors — a serious approximation, not a weekend one.\n- **The Q–Q position convention is declared in code** (Hazen), so “different from R” is documented, never a surprise.\n\nThe rule going forward: **no scientific type ships without a verification case.** Boxplot and histogram will get theirs the moment they exist."},{"type":"text","body":"## Why the log axis matters — one picture, two views\n*E. coli* going from **120 to 71,000 CFU/mL**. On a linear y-axis, the first hour disappears into the floor. Flip to log-y and every decade gets its own floor — the early growth becomes visible.\n\nSame data. One toggle in the spec."},{"type":"grid","charts":[{"type":"lineplot","scale":"linear","palette":"Cyberpunk Glow","background":"#0a0f14","title":"Linear — first hour gone","xLabel":"Time (min)","yLabel":"CFU/mL","data":{"series":[{"name":"Culture","x":[0,20,40,60,80,100,120,140,160,180],"y":[120,240,510,980,2100,4300,8600,17000,35000,71000]}]}},{"type":"lineplot","scale":"semilog-y","palette":"Cyberpunk Glow","background":"#0a0f14","title":"Log-y — every decade visible","xLabel":"Time (min)","yLabel":"CFU/mL","data":{"series":[{"name":"Culture","x":[0,20,40,60,80,100,120,140,160,180],"y":[120,240,510,980,2100,4300,8600,17000,35000,71000]}]}}]},{"type":"text","body":"## The twin, and why it changes reproducibility\nEvery SlickFast Page has a **twin**: add `.json` to the URL and you get the exact spec that produced it — same fingerprint, same bytes.\n\nFor science, that means a figure isn’t just a picture. It carries its own source. Any chart in a paper, a lab notebook, or a regulatory submission **can be regenerated exactly**, forever. An in-house matplotlib script can’t promise that; it can only point at whatever code existed when someone remembered to save it.\n\nSee it live:\n- [sci-core — Night lab](https://pages.slickfast.com/s/85667e0273cc0c4fbe5096afe8e6e4f1) — the permanent showcase\n- [its twin](https://pages.slickfast.com/s/85667e0273cc0c4fbe5096afe8e6e4f1.json) — same URL, plus `.json`\n- [Paper demo](https://pages.slickfast.com/s/07d64a834cdae6a65459af0fb3984de8) — raw input through the harness"},{"type":"text","body":"## How to call it\n1. `describe_type({ type: \"volcano\" })` — or `scatter`, `survival`, any of the eight\n2. `render_chart` with that type and the shape the contract returns\n3. Prefer `format: \"svg\"` when the host paints artifacts\n4. For a full document: `render_page` / `publish_page`\n\nThe data shapes differ from the gallery types — these take x/y series, not only labels + values — so **call `describe_type` first**. The sci types are *not* in the 47-chart gallery board.\n\nLocal MCP draws without a key. A public URL needs an SF- key — [News #10](https://pages.slickfast.com/s/4d543366fc3d80ee812dab6fbe676041) and [News #11](https://pages.slickfast.com/s/fdff5f0666c3caca0931afe7434208f8)."},{"type":"text","body":"## Takeaways (humans)\n1. **sci-core is free** — eight scientific types, same engine, nothing to buy.\n2. **The log axes are real** — proper `10ⁿ` ticks, decade bunching, and base-2 for doubling data. Not a visual stretch.\n3. **Open the twin** — add `.json` to any Page URL and check the math yourself."},{"type":"text","body":"## Takeaways (agents)\n1. Sci types are **callable** on `render_chart` / `describe_type`: scatter, errorbar, lineplot, barplot, survival, blandaltman, qq, volcano.\n2. They’re **not** in the 47 gallery board — `describe_type` first; data shapes differ.\n3. Do **not** invent boxplot or histogram. They don’t exist yet.\n4. Cold path stays: `get_started` → `news` → `describe_type` → `render_chart`.\n5. Soft launch — the module is live, but it’s not a separate product. Don’t pitch it as one."},{"type":"text","body":"## One sentence to steal\n**Scientific charts. Same engine. Same bytes. Free.**\n\n[Night lab](https://pages.slickfast.com/s/85667e0273cc0c4fbe5096afe8e6e4f1) · [Get started](https://slickfast.com/start) · [News](https://slickfast.com/news) · [Archive](https://slickfast.com/news/archive)"},{"type":"footer","note":"SlickFast News #12 · sci-core · eight types · free · add .json for the twin","link":"https://slickfast.com/news/archive"}]},"specHash":"sha256:afc6ee6d12208937955d60d9a415fd806537292dac4ae0585f6ff036ca421d47","frozen":true,"expiresAt":null}