Skip to content

copick config append-croissant

core

Append filtered rows from a copick project into an existing Croissant.

Usage

copick config append-croissant [OPTIONS]

Description

Unions filtered rows from a source copick project into the destination Croissant at --croissant. The source is loaded from a copick config (--source-config) or from CryoET Data Portal dataset IDs (--source-dataset-ids); the two are mutually exclusive. The destination must be writable (Mode A).

The destination's top-level metadata (name, description, license, etc.) is preserved; only rows and copick:config.pickable_objects are unioned. Rows with the same primary key as an existing destination row are replaced (last append wins). Appended URLs are absolutized so the destination CSVs remain self-sufficient even when source and destination use different base URLs.

Multiple appends with different filters / transforms let you build up a Croissant incrementally — e.g. export curated tomograms first, then append ribosome picks from one author with a session template, then append proteasome picks from a different author with a different template.

Options

Option Type Default Description
--croissant file required Path / URL to the destination Croissant metadata.json. Must be writable (Mode A).
--source-config file Path to a copick config JSON (filesystem, CDP, or mlcroissant). Mutually exclusive with --source-dataset-ids.
--source-dataset-ids text Comma-separated CryoET Data Portal dataset IDs (e.g. '10000,10001'). Mutually exclusive with --source-config.
--no-file-sha256 boolean flag False Skip computing sha256 for picks/meshes (faster but marks output non-strict).
--runs text Comma-separated run names to include. Omit to include all runs.
--tomograms text · multiple Copick URI to filter tomograms (e.g. 'wbp@10.0'). Repeatable.
--features text · multiple Copick URI to filter features (e.g. 'wbp@10.0:sobel'). Repeatable.
--picks text · multiple Copick URI to filter picks (e.g. 'ribosome:/'). Repeatable.
--meshes text · multiple Copick URI to filter meshes (e.g. 'ribosome:/'). Repeatable.
--segmentations text · multiple Copick URI to filter segmentations (e.g. 'membrane:/@10.0'). Repeatable.
--objects text Comma-separated pickable object names to emit density maps for.
--tomo-type-map text Rename tomo_type values at emission time, e.g. 'wbp-raw:wbp'.
--object-name-map text Rename object names at emission time (also updates copick:config.pickable_objects and records portal_original_name in metadata).
--session-id-template text Python str.format template for synthesizing picks/segmentations session_id from CDP annotation metadata. CDP-only.
--picks-portal-meta text Comma-separated k=v pairs filtering CDP picks by portal metadata. CDP-only.
--picks-author text Comma-separated author names filtering CDP picks. CDP-only.
--segmentations-portal-meta text Comma-separated k=v pairs filtering CDP segmentations. CDP-only.
--segmentations-author text Comma-separated author names filtering CDP segmentations. CDP-only.
--tomograms-portal-meta text Comma-separated k=v pairs filtering CDP tomograms. CDP-only.
--tomograms-author text Comma-separated author names filtering CDP tomograms. CDP-only.
--split text · multiple Assign appended runs to an ML split, e.g. 'train=TS_001,TS_002'. Repeatable. Preserves existing destination splits for runs you don't mention.
--splits-file file CSV with columns 'split' and 'run' providing split assignments for appended runs.
--debug / --no-debug boolean flag False Enable debug logging.

Examples

# Append template-matching ribosome picks with readable session IDs
copick config append-croissant \
    --croissant /tmp/curated/Croissant/metadata.json \
    --source-dataset-ids 10000 \
    --picks "cytosolic-ribosome:*/*" \
    --object-name-map "cytosolic-ribosome:ribosome" \
    --session-id-template "{method_type}" \
    --picks-portal-meta "method_type=template-matching"

# Append picks from a filesystem source and assign a split
copick config append-croissant \
    --croissant my/Croissant/metadata.json \
    --source-config my/filesystem.json \
    --picks "ribosome:*/*" \
    --split train=TS_005

See also