Skip to content

Collaboration

Generate a self-contained bundle:

# Directory form writes phenome_results.h5
pheno.save_results("phenome_results.h5")
pheno.generate_report(
output_path="experiment_2026_01/report.html",
reference_filters={"condition": "Control"},
)
pheno.export_experiment_config(
"experiment_2026_01/config.json",
)

A collaborator reloads it with:

pheno = PhenoMe()
pheno.find_files("/path/to/experiment_2026_01/images")
pheno.load_results("phenome_results.h5")

See Data organization - recommended project layout. For collaboration, add configs/ (template configs) and environment specs under envs/ (conda YAML and pip requirements); the repo root keeps a short requirements.txt that defaults to GPU.

When to use DVC. Large raw image datasets, checkpoint / HDF5 result files, and reproducibility of data lineage across machines.

What the checkpoint already provides. The HDF5 from save_results() or checkpoint_path stores:

  • processing_params (channel_mode, resize_size, pad_size, force_rgb, l2_normalize_channels).
  • version (format version).
  • Embeddings, metadata, properties.

You do not need to duplicate this configuration elsewhere. The checkpoint is self-contained for processing state.

How DVC complements the checkpoint. DVC handles data and assets (versioning, storage, sharing). The checkpoint handles processing state (what was computed, with which params). They work together:

Terminal window
dvc add data/
dvc add results/phenome_results.h5
git add data.dvc results/phenome_results.h5.dvc
git commit -m "Add data and results"

Summary. DVC does not replace the checkpoint. Use the checkpoint for crash-safe processing and parameter traceability; use DVC for data versioning and large-file storage.

  • Use consistent metadata keys across experiments (for example condition, replicate, timepoint).
  • Name config files by experiment: drug_screen_2026.json.
  • Commit configs alongside scripts, not checkpoints - checkpoints are regenerable.