A lightweight database framework for scientific computing with versioning and provenance tracking
Project description
SciDB
Database operations layer for SciStack. Provides abstractions for defining typed variables, configuring the database, and saving/loading data by metadata.
Named Filters (value-based, reusable)
Filter objects are first-class values — assign them to a variable and reuse
them in any where= clause, or compose them with & / | / ~:
# Define once (this IS a ColumnFilter — no special wrapper needed)
clean_gr = GAITRiteLoadedCycle["StepLengths_GR"] != 0
# Use anywhere
for_each(mean_change_from_reference,
inputs={"baseline": Fixed(GAITRiteLoadedCycle["StepLengths_GR"], session="BL"),
"value": GAITRiteLoadedCycle["StepLengths_GR"]},
outputs=[DeltaStepLength],
where=clean_gr & (UAStartFoot() == "A"))
# Compose named filters
clean_and_unilateral = clean_gr & (UAStartFoot() == "U")
for_each(..., where=clean_and_unilateral)
MATLAB equivalent:
clean_gr = GAITRiteLoadedCycle("StepLengths_GR") ~= 0;
scidb.for_each(@meanChangeFromReference, ..., where=clean_gr & (UAStartFoot() == "A"));
Permanent Schema-Level Exclusions
For data that should be excluded from every analysis (e.g., a failed recording session), use the exclusion registry instead of per-call filters.
# Mark a specific trial as excluded (persisted in the database)
scidb.exclude_schema(subject=1, trial=2,
reason="equipment malfunction during recording")
# Exclude an entire subject (trial omitted = wildcard)
scidb.exclude_schema(subject=3, reason="participant withdrew")
# Inspect currently-excluded combinations
exclusions_df = scidb.list_exclusions()
# Re-include (logged; the original exclusion row is preserved)
scidb.include_schema(subject=1, trial=2,
reason="re-reviewed video, recording was valid")
MATLAB equivalent:
scidb.exclude_schema("equipment malfunction", 'subject', 1, 'trial', 2)
scidb.include_schema("re-reviewed, recording was valid", 'subject', 1, 'trial', 2)
tbl = scidb.list_exclusions()
Exclusions are applied automatically by for_each before the iteration loop.
The full exclusion table is hashed and stored in version_keys
(__schema_overrides_hash) so that adding or removing an exclusion
invalidates cached results.
from scidb import configure_database, BaseVariable
import numpy as np
db = configure_database("experiment.duckdb", ["subject", "session"])
class RawSignal(BaseVariable):
schema_version = 1
RawSignal.save(np.array([1, 2, 3]), subject=1, session="A")
(raw,) = RawSignal.load(subject=1, session="A") # generator; unpack for single result
all_versions = list(RawSignal.load(subject=1, session="A", version="all"))
Logging
Every scidb operation logs through the shared scistacklog facade. configure_database() points the file sink at scidb.log next to the database file and writes a run-context header (package versions, Python version, pid), so each log file is self-describing.
Two sinks with independent levels, both defaulting to INFO:
- console (stderr): the pipeline narrative — for_each banner, periodic progress, run summary with failure reasons,
[timing]summaries. - file (
scidb.log): the same narrative, with date + millisecond timestamps and the originating layer ([scidb],[scifor],[matlab], …) on every line; one record per line.
For debugging, raise a sink to DEBUG to capture the full execution trace (named internal steps with durations, per-iteration [run]/[skip] lines, per-phase [timing] tables, column/dtype dumps):
from scidb import Log
Log.set_level("DEBUG", sink="file") # full detail in scidb.log only
Log.set_level("DEBUG") # both sinks
or set the SCIDB_LOG_LEVEL environment variable, or pass -v to the scidb CLI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scistack_db-0.1.10.tar.gz.
File metadata
- Download URL: scistack_db-0.1.10.tar.gz
- Upload date:
- Size: 228.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24642e6408da206138d74b1ab6975b4abfe40f8e5ebb907e689ab2b195875404
|
|
| MD5 |
be929d3cffb51419986eb11ae00edf01
|
|
| BLAKE2b-256 |
32e2ef9ed574b108ebc98138ec8575018b75671de9be4a73b4bd13b259f69e08
|
Provenance
The following attestation bundles were made for scistack_db-0.1.10.tar.gz:
Publisher:
publish.yml on mtillman14/scistack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scistack_db-0.1.10.tar.gz -
Subject digest:
24642e6408da206138d74b1ab6975b4abfe40f8e5ebb907e689ab2b195875404 - Sigstore transparency entry: 2220447964
- Sigstore integration time:
-
Permalink:
mtillman14/scistack@34ab611f353330b4fe4f9491d512b714934b027e -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/mtillman14
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@34ab611f353330b4fe4f9491d512b714934b027e -
Trigger Event:
push
-
Statement type:
File details
Details for the file scistack_db-0.1.10-py3-none-any.whl.
File metadata
- Download URL: scistack_db-0.1.10-py3-none-any.whl
- Upload date:
- Size: 249.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b36f07ced0f818fa08cb81d9746c5f4202b45da15174cddf1a0fca9911a24e69
|
|
| MD5 |
b95acd76bc551c73c1c8e8347b212dfa
|
|
| BLAKE2b-256 |
8ad667d6179ae6282c2d13beb8262025a11d25a444f8c1b1bf995d8f7afb020c
|
Provenance
The following attestation bundles were made for scistack_db-0.1.10-py3-none-any.whl:
Publisher:
publish.yml on mtillman14/scistack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scistack_db-0.1.10-py3-none-any.whl -
Subject digest:
b36f07ced0f818fa08cb81d9746c5f4202b45da15174cddf1a0fca9911a24e69 - Sigstore transparency entry: 2220454214
- Sigstore integration time:
-
Permalink:
mtillman14/scistack@34ab611f353330b4fe4f9491d512b714934b027e -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/mtillman14
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@34ab611f353330b4fe4f9491d512b714934b027e -
Trigger Event:
push
-
Statement type: