sc_tools.registry — Project Registry#
SQLAlchemy-based registry for tracking projects, datasets, SLURM jobs,
agent tasks, and pipeline phase status. SQLite by default; PostgreSQL
via SC_TOOLS_REGISTRY_URL environment variable.
from sc_tools.registry import Registry
reg = Registry()
reg.add_project("ggo_visium", platform="visium")
reg.register_dataset("ggo_visium", "results/adata.raw.h5ad", phase="qc_filter")
reg.mark_phase_complete("ggo_visium", "qc_filter")
print(reg.status())
Install: pip install sc-tools[registry]
CLI: python -m sc_tools registry status
- class sc_tools.registry.Registry(db_url=None)[source]#
Bases:
objectProject and data registry backed by SQLite or PostgreSQL.
- Parameters:
db_url (
str|None) – SQLAlchemy DB URL. Defaults to env varSC_TOOLS_REGISTRY_URLorsqlite:///~/.sc_tools/registry.db.
- add_project(name, platform=None, data_type=None, *, domain=None, imaging_modality=None, project_type='internal', visibility='private')[source]#
Register a new project. Returns project id.
If a project with the same name exists its id is returned without creating a duplicate.
- register_inventory_item(name, uri, modality, *, data_source_name=None, sample_name=None, platform=None, fmt='h5ad', n_obs=None, n_vars=None, size_mb=None, organism=None, tissue=None, metadata=None)[source]#
Register an inventory item. Returns item id. Idempotent by name.
- list_inventory_items(modality=None, platform=None)[source]#
List inventory items with optional filters.
- create_dataset(name, *, description=None, fmt='mudata')[source]#
Create a dataset. Returns dataset id. Idempotent for name+version=1.
- get_dataset(name, version=None)[source]#
Return dataset dict. If version is None, get is_current or highest version.
- add_dataset_member(dataset_name, inventory_name, modality_key)[source]#
Add an inventory item to a dataset. Returns member id.
- remove_dataset_member(dataset_name, modality_key)[source]#
Remove a member from the current version of a dataset.
- get_dataset_members(dataset_name, version=None)[source]#
Return list of member dicts (including inventory item details).
- bump_dataset_version(dataset_name)[source]#
Create a new version of a dataset, copying all members. Returns new dataset id.
- link_project_dataset(project_name, dataset_name, *, role='primary', notes=None)[source]#
Link a project to a dataset. Returns link id. Idempotent.
- upsert_phase(project_name, dataset_name, phase_group, subphase, *, status='in_progress', uri=None, n_obs=None, n_vars=None, notes=None, metadata=None)[source]#
Create or update a phase in project_phases.
- Parameters:
- Return type:
- list_phases(project_name, phase_group=None)[source]#
Return phase summaries for a project from project_phases.
- mark_phase_complete(project_name, phase_group, subphase)[source]#
Mark a phase as ‘ready’ in project_phases.
- record_provenance(tool, *, tool_version=None, reference_genome=None, reference_dataset=None, signature_source=None, n_input_obs=None, n_output_obs=None, params=None, environment=None, script_uri=None, agent=None, phase_id=None, dataset_id=None)[source]#
Record provenance for a transformation. Returns provenance id.
Exactly one of phase_id or dataset_id must be provided.
- Return type:
- Parameters:
tool (str)
tool_version (str | None)
reference_genome (str | None)
reference_dataset (str | None)
signature_source (str | None)
n_input_obs (int | None)
n_output_obs (int | None)
params (dict | None)
environment (dict | None)
script_uri (str | None)
agent (str | None)
phase_id (int | None)
dataset_id (int | None)
- get_provenance(*, phase_id=None, dataset_id=None)[source]#
Return provenance records for a given target.
- register_data_source(name, uri, *, description=None, platform=None, domain=None, imaging_modality=None, source_type=None, organism=None, tissue=None, disease=None, n_samples=None, n_cells=None, publication=None, access_notes=None, status='available', metadata=None)[source]#
Register a data source. Returns data source id. Idempotent.
- Return type:
- Parameters:
name (str)
uri (str)
description (str | None)
platform (str | None)
domain (str | None)
imaging_modality (str | None)
source_type (str | None)
organism (str | None)
tissue (str | None)
disease (str | None)
n_samples (int | None)
n_cells (int | None)
publication (str | None)
access_notes (str | None)
status (str)
metadata (dict | None)
- list_data_sources(platform=None, source_type=None, disease=None, tissue=None)[source]#
Return data sources, optionally filtered.
- list_datasets(project_name=None)[source]#
List datasets, optionally filtered by project via project_datasets.
- get_dataset_uri(project_name, dataset_name)[source]#
Return the URI for a dataset linked to a project.
- project_data_summary(project_name)[source]#
Return summary of datasets and their members for a project.
- add_patient(patient_id, metadata=None, **clinical_kwargs)[source]#
Register a patient. Returns patient DB id.
Idempotent: if a patient with the same
patient_idexists, its DB id is returned without creating a duplicate.
- add_subject(subject_id, organism='human', **clinical_kwargs)[source]#
Backward-compatible alias for
add_patient().Maps subject_id -> patient_id and packs clinical columns into metadata.
- get_subject(subject_id)[source]#
Backward-compatible alias for
get_patient().
- list_patients(diagnosis=None, tissue=None)[source]#
Return patients, optionally filtered by metadata fields.
- list_subjects(project_name=None, diagnosis=None, tissue=None)[source]#
Backward-compatible alias for
list_patients().The project_name filter checks for patients linked via patient -> sample -> inventory_item -> dataset_member -> dataset -> project.
- register_sample(sample_id, *, patient_id=None, tissue=None, collection_date=None, metadata=None)[source]#
Register a sample. Returns sample DB id. Idempotent by sample_id.
- register_data(project_name, phase, uri, *, fmt='h5ad', platform=None, category=None, status='ready', file_role='primary', n_obs=None, n_vars=None, size_mb=None, patient_id=None, metadata=None, sample_id=None)[source]#
Deprecated. Use register_inventory_item() instead.
- register_dataset(project_name, phase, uri, *, sample_id=None, fmt='h5ad', size_mb=None, md5=None, status='ready', file_role='primary', validated=False, n_obs=None, n_vars=None)[source]#
Deprecated. Use register_inventory_item() instead.
- register_biodata(project_name, category, platform, uri, *, fmt=None, status='pending', file_role='primary', phase=None, n_obs=None, n_vars=None, size_mb=None, md5=None, subject_id=None, sample_db_id=None, **type_kwargs)[source]#
Deprecated. Use register_inventory_item() instead.
- list_biodata(project_name=None, category=None, platform=None, sample_db_id=None, phase=None)[source]#
Deprecated. Use list_inventory_items() instead.
- link_project_data_source(project_name, data_source_name, *, role='input', notes=None)[source]#
Deprecated. Use link_project_dataset() instead.