Skip to main content

scistackplotdb

Plot what's in the database

scistackplotdb loads SciDB variables into the long format scistackplot consumes, and generates pipeline endpoints from a finished plot spec.

pip install scistackplotdb
from scidb import configure_database
from scistackplot import PlotSpec, Role, PlotKind, render
from scistackplotdb import ScidbSource

db = configure_database("experiment.duckdb", ["subject", "session", "trial"])
source = ScidbSource(db)

table = source.get_table(["StepLength"])
spec = PlotSpec(
    measures=["StepLength"],
    roles={"session": Role.X, "subject": Role.FREE, "trial": Role.FREE},
    kind=PlotKind.BOX,
)
figure = render(table, spec)

What this layer actually solves

The long format is nearly free — schema keys are already columns once a variable is joined to _schema, the same shape stat_ functions receive. The real work is the four things a flat CSV never had.

Shape classification. Scalar, 1-D, or 2-D, decided from observed values rather than declared SQL type names, and cached. It determines which plot kinds are offered at all.

Joins across schema depth. Plotting trial-level Speed against subject-level Mass broadcasts the shallower variable down the hierarchy:

source.joinable_with("StepLength")     # -> ["Mass"]  (Signal is 1-D: no x axis)
table = source.get_table(["StepLength", "Mass"])   # one Mass value per trial row

Because the dataset schema is an ordered, contiguous hierarchy, one variable's levels are always a prefix of the other's or the two cannot be joined — and join_frames refuses the latter with a message saying why.

Variants are factors — this one is a correctness trap. A variable produced at two filter cutoffs has two records per schema combination. Treating those branch params as ordinary columns silently plots two pipelines' results as if they were replicates of one:

spec = PlotSpec(measures=["Scaled"], roles={"session": Role.X})
validate(spec, table)
# RoleError: Variant factor(s) ['scale.factor'] would be pooled: their levels
# are different pipeline variants, not replicates... Assign them
# 'color'/'facet'/'iterate', select the variants you want with
# PlotSpec.variant_sets, or — to pool them deliberately — set them to
# 'aggregate' or 'free' yourself.

A transport budget. 1-D data across hundreds of trials is megabytes. resolve(..., max_points=N) downsamples for the interactive panel; export never does.

From spec to pipeline endpoint

from scistackplotdb import generate_endpoint

code = generate_endpoint(spec, table, input_variable="StepLength")
print(code.source)
def plot_steplength(df, filename):
    ...
    return g.figure

for_each(
    plot_steplength,
    inputs={
        "df": StepLength,
        "filename": PathOutput("plots/steplength_{subject}.png"),
    },
    outputs=[StepLengthFigure],
    as_table=['df'],
    finalized=True,
    subject=[],
)

The one translation that has to be exactly right is Role.ITERATE → a for_each iteration keyword. Interactively, ITERATE fans out through a pandas groupby; in the pipeline it fans out through for_each + PathOutput. If those disagree, the exported pipeline is not what you previewed — tests/test_fanout_parity.py runs both paths against the same database and compares the figure sets.

Everything about recording the figure — finalized, artifact stamping, skip_computed, scidb report — is SciDB's existing endpoint machinery and is untouched.

Ordering

Factor levels are ordered by SciDB's declared schema_key_types, not by pandas' default: a key declared numeric sorts numerically, and everything else goes through a natural sort so zero-padded IDs land as 01, 02, … 10 instead of 01, 10, 02.

See docs/claude/plotting-library-design.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scistackplotdb-0.1.26.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scistackplotdb-0.1.26-py3-none-any.whl (31.0 kB view details)

Uploaded Python 3

File details

Details for the file scistackplotdb-0.1.26.tar.gz.

File metadata

  • Download URL: scistackplotdb-0.1.26.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scistackplotdb-0.1.26.tar.gz
Algorithm Hash digest
SHA256 233c4345b00e5294d3fa4d8100dccc59fdd639a824fece1d8238d7bb771c45a6
MD5 ccb1eea93cc5a7050dad2f7d2dbd71f1
BLAKE2b-256 c44c75b2a19d5641fbe7fe8b76b18e9907a6392f87f0c27940bbb7db13297c0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for scistackplotdb-0.1.26.tar.gz:

Publisher: publish.yml on mtillman14/scistack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scistackplotdb-0.1.26-py3-none-any.whl.

File metadata

  • Download URL: scistackplotdb-0.1.26-py3-none-any.whl
  • Upload date:
  • Size: 31.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scistackplotdb-0.1.26-py3-none-any.whl
Algorithm Hash digest
SHA256 095c3440e3f3cfb31d591efa20d15d56b87eb2b6dae4c6223772a3018ede04b5
MD5 f3406938181b2ad1b8c5755aa5eaeb50
BLAKE2b-256 e764402ab65dfc7ed4cb48543fc339eca69b307dd991c616eea2c0a0e59a1d3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for scistackplotdb-0.1.26-py3-none-any.whl:

Publisher: publish.yml on mtillman14/scistack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.29

2 files

0.1.28

2 files

This release

0.1.26 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page