diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..654439d6b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2s/eval_grouped.yaml @@ -0,0 +1,45 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_denv__wave2s (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-denv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_v2/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2/ipsc/a549__denv +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-denv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2t/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2t/eval_grouped.yaml new file mode 100644 index 000000000..4b7465851 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2t/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_denv__wave2t (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-denv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2x/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2x/eval_grouped.yaml new file mode 100644 index 000000000..65ed6f777 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave2x/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_denv__wave2x (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-denv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave3b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave3b/eval_grouped.yaml new file mode 100644 index 000000000..6bcef6e0a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave3b/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_denv__wave3b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-denv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave3h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave3h/eval_grouped.yaml new file mode 100644 index 000000000..470b3b9f0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_denv__wave3h/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_denv__wave3h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-denv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..c76d0b6db --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2s/eval_grouped.yaml @@ -0,0 +1,45 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_mock__wave2s (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-mock + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_v2/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2/ipsc/a549__mock +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-mock + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2t/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2t/eval_grouped.yaml new file mode 100644 index 000000000..ff8e5a185 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2t/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_mock__wave2t (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-mock + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2x/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2x/eval_grouped.yaml new file mode 100644 index 000000000..3ce10f959 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave2x/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_mock__wave2x (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-mock + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave3b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave3b/eval_grouped.yaml new file mode 100644 index 000000000..eff30b57a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave3b/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_mock__wave3b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-mock + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave3h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave3h/eval_grouped.yaml new file mode 100644 index 000000000..524bb26a3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_mock__wave3h/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_mock__wave3h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-mock + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..259aae9e2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2s/eval_grouped.yaml @@ -0,0 +1,45 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_zikv__wave2s (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-zikv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_v2/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-zikv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2t/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2t/eval_grouped.yaml new file mode 100644 index 000000000..9f9c43ccc --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2t/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_zikv__wave2t (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-zikv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2x/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2x/eval_grouped.yaml new file mode 100644 index 000000000..a65c548eb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave2x/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_zikv__wave2x (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-zikv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave3b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave3b/eval_grouped.yaml new file mode 100644 index 000000000..416a840a5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave3b/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_zikv__wave3b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-zikv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave3i/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave3i/eval_grouped.yaml new file mode 100644 index 000000000..31a8a8f34 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_a549_zikv__wave3i/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_a549_zikv__wave3i (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-sec61b-zikv + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..24c0f693e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2s/eval_grouped.yaml @@ -0,0 +1,45 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_ipsc__wave2s (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/er/fnet3d_vscyto3daug_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2/ipsc/ipsc +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/er/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2t/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2t/eval_grouped.yaml new file mode 100644 index 000000000..fd32c2836 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2t/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_ipsc__wave2t (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/er/fnet3d_vscyto3daug_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2x/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2x/eval_grouped.yaml new file mode 100644 index 000000000..a125f0aaa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave2x/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_ipsc__wave2x (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave3b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave3b/eval_grouped.yaml new file mode 100644 index 000000000..532cc55a7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave3b/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_ipsc__wave3b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave3h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave3h/eval_grouped.yaml new file mode 100644 index 000000000..ba5d7ff91 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_er_ipsc__wave3h/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_er_ipsc__wave3h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: er +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: sec61b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__ctrl7/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__ctrl7/eval_grouped.yaml new file mode 100644 index 000000000..d55fcccb6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__ctrl7/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__ctrl7 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1_fork__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__stage0/eval_grouped.yaml new file mode 100644 index 000000000..2584a5fc9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__stage0/eval_grouped.yaml @@ -0,0 +1,161 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d/ipsc/a549__denv +- name: fnet3d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_paper/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper/ipsc/a549__denv +- name: unext2_2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch/ipsc/a549__denv +- name: unext2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch/ipsc/a549__denv +- name: pix2pix2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit/ipsc/a549__denv +- name: pix2pix3d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit/ipsc/a549__denv +- name: celldiff_2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d/ipsc/a549__denv +- name: celldiff_r2_iterative__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_r2_iterative/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_r2_iterative/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_r2_iterative/ipsc/a549__denv +- name: fnet2d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_spotlight/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_spotlight/ipsc/a549__denv +- name: fnet3d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_spotlight/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_spotlight/ipsc/a549__denv +- name: pix2pix2d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__denv +- name: pix2pix3d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1/eval_grouped.yaml new file mode 100644 index 000000000..ac4346f55 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave1 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_segaux_iterative__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_segaux_iterative/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_segaux_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..a7d9ad7fe --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1b/eval_grouped.yaml @@ -0,0 +1,62 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave1b (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux/ipsc/a549__denv +- name: unext2_2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv +- name: pix2pix2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..b9da7a819 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1c/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix2d_last__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_last/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_last/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..65bec4660 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave1d/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave1d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segaux/ipsc/a549__denv +- name: unext2_2d_l1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..17f0915f7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2a/eval_grouped.yaml @@ -0,0 +1,106 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2a (7 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_2d_l1segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__denv +- name: unext2_2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv +- name: fnet2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segauxself/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segauxself/ipsc/a549__denv +- name: fnet3d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_paper_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper_segaux/ipsc/a549__denv +- name: pix2pix2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__denv +- name: pix2pix3d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__denv +- name: pix2pix3d_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_v2/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..44f7e80e0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2c/eval_grouped.yaml @@ -0,0 +1,84 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2c (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_seed1/ipsc/a549__denv +- name: unext2_2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__denv +- name: pix2pix2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__denv +- name: unext2_2d_l1seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__denv +- name: unext2_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..2a5e5ad1c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2f/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2f (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segaux_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux_seed1/ipsc/a549__denv +- name: unext2_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2j/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2j/eval_grouped.yaml new file mode 100644 index 000000000..4fffb8077 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2j/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2j (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_segauxself/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segauxself/ipsc/a549__denv +- name: celldiff_2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2n/eval_grouped.yaml new file mode 100644 index 000000000..a62c8bf02 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2n/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2n (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2o/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2o/eval_grouped.yaml new file mode 100644 index 000000000..3cd47401b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2o/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2o (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..10a2e2027 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave2q/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave2q (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave3j/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave3j/eval_grouped.yaml new file mode 100644 index 000000000..c45b5bb3f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave3j/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave3j (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave3m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave3m/eval_grouped.yaml new file mode 100644 index 000000000..5275ba44d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_denv__wave3m/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_denv__wave3m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_sauna__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-denv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__denv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_DENV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__ctrl7/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__ctrl7/eval_grouped.yaml new file mode 100644 index 000000000..f6b3a9678 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__ctrl7/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__ctrl7 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1_fork__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__stage0/eval_grouped.yaml new file mode 100644 index 000000000..f5c0543fa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__stage0/eval_grouped.yaml @@ -0,0 +1,161 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d/ipsc/a549__mock +- name: fnet3d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_paper/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper/ipsc/a549__mock +- name: unext2_2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch/ipsc/a549__mock +- name: unext2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch/ipsc/a549__mock +- name: pix2pix2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit/ipsc/a549__mock +- name: pix2pix3d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit/ipsc/a549__mock +- name: celldiff_2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d/ipsc/a549__mock +- name: celldiff_r2_iterative__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_r2_iterative/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_r2_iterative/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_r2_iterative/ipsc/a549__mock +- name: fnet2d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_spotlight/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_spotlight/ipsc/a549__mock +- name: fnet3d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_spotlight/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_spotlight/ipsc/a549__mock +- name: pix2pix2d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__mock +- name: pix2pix3d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1/eval_grouped.yaml new file mode 100644 index 000000000..8a9b30af8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave1 (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_segaux_iterative__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_segaux_iterative/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_segaux_iterative/ipsc/a549__mock +- name: celldiff_2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..df5fccede --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1b/eval_grouped.yaml @@ -0,0 +1,62 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave1b (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux/ipsc/a549__mock +- name: unext2_2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock +- name: pix2pix2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..76535ba37 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1c/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix2d_last__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_last/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_last/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..4560ddf5d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave1d/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave1d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segaux/ipsc/a549__mock +- name: unext2_2d_l1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..986a179bc --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2a/eval_grouped.yaml @@ -0,0 +1,106 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2a (7 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_2d_l1segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__mock +- name: unext2_2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock +- name: fnet2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segauxself/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segauxself/ipsc/a549__mock +- name: fnet3d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_paper_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper_segaux/ipsc/a549__mock +- name: pix2pix2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__mock +- name: pix2pix3d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__mock +- name: pix2pix3d_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_v2/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..4f9fd06b9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2c/eval_grouped.yaml @@ -0,0 +1,84 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2c (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_seed1/ipsc/a549__mock +- name: unext2_2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__mock +- name: pix2pix2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__mock +- name: unext2_2d_l1seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__mock +- name: unext2_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..af1ee090b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2f/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2f (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segaux_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux_seed1/ipsc/a549__mock +- name: unext2_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2j/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2j/eval_grouped.yaml new file mode 100644 index 000000000..1d3e20fbe --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2j/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2j (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_segauxself/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2n/eval_grouped.yaml new file mode 100644 index 000000000..121dcca85 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2n/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2n (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2o/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2o/eval_grouped.yaml new file mode 100644 index 000000000..ab95b727e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2o/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2o (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..96930d847 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave2q/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave2q (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave3g/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave3g/eval_grouped.yaml new file mode 100644 index 000000000..7e365f42d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave3g/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave3g (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave3m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave3m/eval_grouped.yaml new file mode 100644 index 000000000..75c6ff48f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_mock__wave3m/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_mock__wave3m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_sauna__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-caax-mock + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__mock + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_mock.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__ctrl7/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__ctrl7/eval_grouped.yaml new file mode 100644 index 000000000..e6e816181 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__ctrl7/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__ctrl7 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1_fork__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__stage0/eval_grouped.yaml new file mode 100644 index 000000000..4cc7ed004 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__stage0/eval_grouped.yaml @@ -0,0 +1,161 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d/ipsc/a549__zikv +- name: fnet3d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_paper/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper/ipsc/a549__zikv +- name: unext2_2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch/ipsc/a549__zikv +- name: unext2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch/ipsc/a549__zikv +- name: pix2pix2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit/ipsc/a549__zikv +- name: pix2pix3d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit/ipsc/a549__zikv +- name: celldiff_2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d/ipsc/a549__zikv +- name: celldiff_r2_iterative__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_r2_iterative/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_r2_iterative/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_r2_iterative/ipsc/a549__zikv +- name: fnet2d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_spotlight/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_spotlight/ipsc/a549__zikv +- name: fnet3d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_spotlight/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_spotlight/ipsc/a549__zikv +- name: pix2pix2d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv +- name: pix2pix3d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1/eval_grouped.yaml new file mode 100644 index 000000000..def7c824c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave1 (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_segaux_iterative__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_segaux_iterative/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_segaux_iterative/ipsc/a549__zikv +- name: celldiff_2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..db08c2481 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1b/eval_grouped.yaml @@ -0,0 +1,62 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave1b (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux/ipsc/a549__zikv +- name: unext2_2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv +- name: pix2pix2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..ff94fe6da --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1c/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix2d_last__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_last/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_last/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..faf34c036 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave1d/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave1d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segaux/ipsc/a549__zikv +- name: unext2_2d_l1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..94ab7d6f5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2a/eval_grouped.yaml @@ -0,0 +1,106 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2a (7 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_2d_l1segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__zikv +- name: unext2_2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv +- name: fnet2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segauxself/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segauxself/ipsc/a549__zikv +- name: fnet3d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet3d_paper_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper_segaux/ipsc/a549__zikv +- name: pix2pix2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv +- name: pix2pix3d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__zikv +- name: pix2pix3d_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_v2/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..8ceb3bf97 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2c/eval_grouped.yaml @@ -0,0 +1,84 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2c (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_seed1/ipsc/a549__zikv +- name: unext2_2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/a549__zikv +- name: pix2pix2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_seed1/ipsc/a549__zikv +- name: unext2_2d_l1seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__zikv +- name: unext2_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2e/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2e/eval_grouped.yaml new file mode 100644 index 000000000..1a76865b0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2e/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2e (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/celldiff_2d_segauxself/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..f1164886e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2f/eval_grouped.yaml @@ -0,0 +1,51 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2f (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fnet2d_segaux_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux_seed1/ipsc/a549__zikv +- name: unext2_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2n/eval_grouped.yaml new file mode 100644 index 000000000..7632bc353 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2n/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2n (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2o/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2o/eval_grouped.yaml new file mode 100644 index 000000000..f458a1a3c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2o/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2o (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..d64d0316a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave2q/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave2q (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave3l/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave3l/eval_grouped.yaml new file mode 100644 index 000000000..3c9d04436 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave3l/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave3l (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave3m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave3m/eval_grouped.yaml new file mode 100644 index 000000000..4d7d01d30 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_a549_zikv__wave3m/eval_grouped.yaml @@ -0,0 +1,40 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_a549_zikv__wave3m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_sauna__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-caax-zikv + target: caax + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__zikv + nuclei_gt_path: /hpc/projects/virtual_staining/training/dynacell/a549/mantis/test/dual_nucl_memb_ZIKV.zarr + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__ctrl7/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__ctrl7/eval_grouped.yaml new file mode 100644 index 000000000..8cdbbfdf7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__ctrl7/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__ctrl7 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1_fork__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__stage0/eval_grouped.yaml new file mode 100644 index 000000000..9f6f505f5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__stage0/eval_grouped.yaml @@ -0,0 +1,149 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet2d/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d/ipsc/ipsc +- name: fnet3d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet3d_paper/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper/ipsc/ipsc +- name: unext2_2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch/ipsc/ipsc +- name: unext2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto3d_scratch/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch/ipsc/ipsc +- name: pix2pix2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix2d_unetvit/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit/ipsc/ipsc +- name: pix2pix3d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit/ipsc/ipsc +- name: celldiff_2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/celldiff_2d/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d/ipsc/ipsc +- name: celldiff_r2_iterative__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_r2_iterative/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/celldiff_r2_iterative/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_r2_iterative/ipsc/ipsc +- name: fnet2d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet2d_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_spotlight/ipsc/ipsc +- name: fnet3d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet3d_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_spotlight/ipsc/ipsc +- name: pix2pix2d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix2d_unetvit_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_spotlight/ipsc/ipsc +- name: pix2pix3d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1a/eval_grouped.yaml new file mode 100644 index 000000000..1309c6e17 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1a/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave1a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix2d_unetvit_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..5911dea0c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1b/eval_grouped.yaml @@ -0,0 +1,99 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave1b (7 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet2d_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux/ipsc/ipsc +- name: unext2_2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc +- name: pix2pix2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix2d_unetvit_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segaux/ipsc/ipsc +- name: fnet2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet2d_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_seed1/ipsc/ipsc +- name: unext2_2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_seed1/ipsc/ipsc +- name: unext2_2d_l1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1/ipsc/ipsc +- name: unext2_2d_safecrop__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..7757507a6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1c/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix2d_last__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix2d_unetvit_last/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_last/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..f1fb2ca70 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave1d/eval_grouped.yaml @@ -0,0 +1,59 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave1d (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/celldiff_2d_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segaux/ipsc/ipsc +- name: celldiff_2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/celldiff_2d_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_seed1/ipsc/ipsc +- name: unext2_2d_jointsteps__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..3cd9c6a5a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2a/eval_grouped.yaml @@ -0,0 +1,129 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave2a (10 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: celldiff_2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/celldiff_2d_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_2d_segauxself/ipsc/ipsc +- name: celldiff_segaux_iterative__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/celldiff_segaux_iterative/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/celldiff_segaux_iterative/ipsc/ipsc +- name: unext2_2d_l1seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/ipsc +- name: unext2_2d_l1segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/ipsc +- name: unext2_2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc +- name: fnet2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet2d_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segauxself/ipsc/ipsc +- name: fnet3d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet3d_paper_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet3d_paper_segaux/ipsc/ipsc +- name: pix2pix2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix2d_unetvit_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix2d_unetvit_segauxself/ipsc/ipsc +- name: pix2pix3d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux/ipsc/ipsc +- name: pix2pix3d_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..e7b96c163 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2c/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave2c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..2c8e574f1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2f/eval_grouped.yaml @@ -0,0 +1,49 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave2f (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fnet2d_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fnet2d_segaux_seed1/ipsc/ipsc +- name: unext2_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2n/eval_grouped.yaml new file mode 100644 index 000000000..7e5f75e2d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2n/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave2n (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2o/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2o/eval_grouped.yaml new file mode 100644 index 000000000..05b613f4a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2o/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave2o (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..4e7f210e0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave2q/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave2q (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: unext2_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave3f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave3f/eval_grouped.yaml new file mode 100644 index 000000000..81064a00c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave3f/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave3f (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave3m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave3m/eval_grouped.yaml new file mode 100644 index 000000000..46aba18f6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_membrane_ipsc__wave3m/eval_grouped.yaml @@ -0,0 +1,39 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_membrane_ipsc__wave3m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: membrane +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino + nuclei_channel_name: Nuclei +conditions: +- name: pix2pix3d_segaux_sauna__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: membrane + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl3/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl3/eval_grouped.yaml new file mode 100644 index 000000000..7400538e5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl3/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__ctrl3 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl4/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl4/eval_grouped.yaml new file mode 100644 index 000000000..f90306e8c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl4/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__ctrl4 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice_e68__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl5/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl5/eval_grouped.yaml new file mode 100644 index 000000000..5460ec820 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__ctrl5/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__ctrl5 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1_e76__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..91363ae1b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2s/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__wave2s (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_v2/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2v/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2v/eval_grouped.yaml new file mode 100644 index 000000000..4c65ad140 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2v/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__wave2v (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2w/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2w/eval_grouped.yaml new file mode 100644 index 000000000..a21d7ef43 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2w/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__wave2w (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2z/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2z/eval_grouped.yaml new file mode 100644 index 000000000..0a80950f2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave2z/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__wave2z (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave3a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave3a/eval_grouped.yaml new file mode 100644 index 000000000..69f711ff3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave3a/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__wave3a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave3k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave3k/eval_grouped.yaml new file mode 100644 index 000000000..c770b7ab7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_denv__wave3k/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_denv__wave3k (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-denv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl3/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl3/eval_grouped.yaml new file mode 100644 index 000000000..4f04b15be --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl3/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__ctrl3 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl4/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl4/eval_grouped.yaml new file mode 100644 index 000000000..1f0b8103c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl4/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__ctrl4 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice_e68__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl5/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl5/eval_grouped.yaml new file mode 100644 index 000000000..5703e9a20 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__ctrl5/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__ctrl5 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1_e76__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..279306cc6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2s/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__wave2s (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_v2/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2v/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2v/eval_grouped.yaml new file mode 100644 index 000000000..594d72825 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2v/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__wave2v (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2w/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2w/eval_grouped.yaml new file mode 100644 index 000000000..0df32515e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2w/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__wave2w (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2z/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2z/eval_grouped.yaml new file mode 100644 index 000000000..a955ee24b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave2z/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__wave2z (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave3a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave3a/eval_grouped.yaml new file mode 100644 index 000000000..28c0f595f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave3a/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__wave3a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave3k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave3k/eval_grouped.yaml new file mode 100644 index 000000000..78b619fe8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_mock__wave3k/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_mock__wave3k (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-mock + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl3/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl3/eval_grouped.yaml new file mode 100644 index 000000000..bf6c689b2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl3/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__ctrl3 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl4/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl4/eval_grouped.yaml new file mode 100644 index 000000000..d4253cc66 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl4/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__ctrl4 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice_e68__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl5/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl5/eval_grouped.yaml new file mode 100644 index 000000000..c49da7999 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__ctrl5/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__ctrl5 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1_e76__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..aaa58e710 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2s/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__wave2s (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_v2/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2v/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2v/eval_grouped.yaml new file mode 100644 index 000000000..567af2186 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2v/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__wave2v (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2w/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2w/eval_grouped.yaml new file mode 100644 index 000000000..4bc46d620 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2w/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__wave2w (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2z/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2z/eval_grouped.yaml new file mode 100644 index 000000000..8a11acce7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave2z/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__wave2z (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave3a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave3a/eval_grouped.yaml new file mode 100644 index 000000000..cfe9c0058 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave3a/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__wave3a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave3k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave3k/eval_grouped.yaml new file mode 100644 index 000000000..507ddd580 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_a549_zikv__wave3k/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_a549_zikv__wave3k (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-tomm20-zikv + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl3/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl3/eval_grouped.yaml new file mode 100644 index 000000000..e4014cf1b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl3/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__ctrl3 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl4/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl4/eval_grouped.yaml new file mode 100644 index 000000000..69effc49c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl4/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__ctrl4 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice_e68__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl5/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl5/eval_grouped.yaml new file mode 100644 index 000000000..95d3c477d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__ctrl5/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__ctrl5 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1_e76__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2s/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2s/eval_grouped.yaml new file mode 100644 index 000000000..fd1b91353 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2s/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__wave2s (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2v/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2v/eval_grouped.yaml new file mode 100644 index 000000000..f48e92e51 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2v/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__wave2v (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2w/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2w/eval_grouped.yaml new file mode 100644 index 000000000..f3dd4a3ab --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2w/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__wave2w (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2z/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2z/eval_grouped.yaml new file mode 100644 index 000000000..f4644f511 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave2z/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__wave2z (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave3a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave3a/eval_grouped.yaml new file mode 100644 index 000000000..c0c088fa3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave3a/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__wave3a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave3k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave3k/eval_grouped.yaml new file mode 100644 index 000000000..22c3f6b5e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_mito_ipsc__wave3k/eval_grouped.yaml @@ -0,0 +1,35 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_mito_ipsc__wave3k (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: mitochondria +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +conditions: +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: tomm20 + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl1/eval_grouped.yaml new file mode 100644 index 000000000..6f92850e6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl1/eval_grouped.yaml @@ -0,0 +1,58 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__ctrl1 (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_histmatch__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_paper_histmatch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_histmatch/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_histmatch/ipsc/a549__denv +- name: pix2pix3d_v2_histmatch__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__denv +- name: unext2_v2_histmatch__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl2/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl2/eval_grouped.yaml new file mode 100644 index 000000000..0569f154d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl2/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__ctrl2 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_seed1_e74__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl6/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl6/eval_grouped.yaml new file mode 100644 index 000000000..ab955fe09 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl6/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__ctrl6 (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_cool38__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__denv +- name: fnet3d_vscyto3daug_v2_cool60__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl6b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl6b/eval_grouped.yaml new file mode 100644 index 000000000..7af0be843 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl6b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__ctrl6b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_cool100__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl8/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl8/eval_grouped.yaml new file mode 100644 index 000000000..c5d1d035a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl8/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__ctrl8 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw_e76__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl9/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl9/eval_grouped.yaml new file mode 100644 index 000000000..8c7be1f0c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__ctrl9/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__ctrl9 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__stage0/eval_grouped.yaml new file mode 100644 index 000000000..6d2fb41d4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__stage0/eval_grouped.yaml @@ -0,0 +1,148 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d/ipsc/a549__denv +- name: fnet3d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper/ipsc/a549__denv +- name: unext2_2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__denv +- name: unext2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__denv +- name: pix2pix2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit/ipsc/a549__denv +- name: pix2pix3d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit/ipsc/a549__denv +- name: celldiff_2d__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d/ipsc/a549__denv +- name: celldiff_r2_iterative__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_r2_iterative/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_r2_iterative/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_r2_iterative/ipsc/a549__denv +- name: fnet2d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_spotlight/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_spotlight/ipsc/a549__denv +- name: fnet3d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_spotlight/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_spotlight/ipsc/a549__denv +- name: pix2pix2d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__denv +- name: pix2pix3d_spotlight__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1/eval_grouped.yaml new file mode 100644 index 000000000..59fd82baf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave1 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_ccond_iterative__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_ccond_iterative/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_ccond_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1a/eval_grouped.yaml new file mode 100644 index 000000000..57b927d55 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1a/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave1a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..1ae579937 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave1b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..e12941193 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1c/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_last__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_last/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_last/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..3b8e11749 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave1d/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave1d (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv +- name: celldiff_2d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segaux/ipsc/a549__denv +- name: celldiff_2d_cjoint__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_cjoint/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_cjoint/ipsc/a549__denv +- name: fnet2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segauxself/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segauxself/ipsc/a549__denv +- name: celldiff_2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_segauxself/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..51b4996f9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2a/eval_grouped.yaml @@ -0,0 +1,68 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2a (4 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv +- name: fnet3d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux/ipsc/a549__denv +- name: pix2pix2d_segauxself__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__denv +- name: pix2pix3d_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2b/eval_grouped.yaml new file mode 100644 index 000000000..93ee28d7b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..592ead090 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2c/eval_grouped.yaml @@ -0,0 +1,68 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2c (4 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_seed1/ipsc/a549__denv +- name: unext2_2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__denv +- name: pix2pix2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__denv +- name: fnet3d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2d/eval_grouped.yaml new file mode 100644 index 000000000..657282bd1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2d/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv +- name: unext2_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..eb046dae6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2f/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2f (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2g/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2g/eval_grouped.yaml new file mode 100644 index 000000000..85c8603a8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2g/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2g (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_ccond__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_ccond/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_ccond/ipsc/a549__denv +- name: celldiff_2d_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2h/eval_grouped.yaml new file mode 100644 index 000000000..66c2c4d5d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2h/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2i/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2i/eval_grouped.yaml new file mode 100644 index 000000000..3f068d04f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2i/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2i (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2j/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2j/eval_grouped.yaml new file mode 100644 index 000000000..e515ccf30 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2j/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2j (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_segaux_iterative__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_segaux_iterative/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_segaux_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2k/eval_grouped.yaml new file mode 100644 index 000000000..7d9d88403 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2k/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2k (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_cjoint_iterative__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_cjoint_iterative/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_cjoint_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2l/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2l/eval_grouped.yaml new file mode 100644 index 000000000..21d47ccf8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2l/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2l (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_doublew__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2m/eval_grouped.yaml new file mode 100644 index 000000000..f3c4d3495 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2m/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_halfw__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2p/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2p/eval_grouped.yaml new file mode 100644 index 000000000..6b70dcc53 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2p/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2p (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..1d83870c8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2q/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2q (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__denv +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__denv +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv +- name: unext2_v2_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2r/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2r/eval_grouped.yaml new file mode 100644 index 000000000..b49e98580 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2r/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2r (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2u/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2u/eval_grouped.yaml new file mode 100644 index 000000000..01f638483 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave2u/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave2u (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3c/eval_grouped.yaml new file mode 100644 index 000000000..ea678a4fc --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3c/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave3c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bgflat__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_bgflat/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bgflat/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3d/eval_grouped.yaml new file mode 100644 index 000000000..895381f3a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3d/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave3d (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bglp__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_bglp/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bglp/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3e/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3e/eval_grouped.yaml new file mode 100644 index 000000000..420e24ab3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3e/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave3e (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux_seed1__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3n/eval_grouped.yaml new file mode 100644 index 000000000..04bc2c609 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_denv__wave3n/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_denv__wave3n (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__denv +- name: fnet3d_vscyto3daug_segaux_doublew__ipsc_trained__a549_denv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-denv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__denv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__denv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl1/eval_grouped.yaml new file mode 100644 index 000000000..2c82800d6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl1/eval_grouped.yaml @@ -0,0 +1,58 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__ctrl1 (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_histmatch__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_paper_histmatch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_histmatch/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_histmatch/ipsc/a549__mock +- name: pix2pix3d_v2_histmatch__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__mock +- name: unext2_v2_histmatch__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl2/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl2/eval_grouped.yaml new file mode 100644 index 000000000..8e2ee2ca2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl2/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__ctrl2 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_seed1_e74__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl6/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl6/eval_grouped.yaml new file mode 100644 index 000000000..4d169f707 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl6/eval_grouped.yaml @@ -0,0 +1,58 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__ctrl6 (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_cool38__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__mock +- name: fnet3d_vscyto3daug_v2_cool60__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__mock +- name: fnet3d_vscyto3daug_v2_cool100__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl8/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl8/eval_grouped.yaml new file mode 100644 index 000000000..409875881 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl8/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__ctrl8 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw_e76__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl9/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl9/eval_grouped.yaml new file mode 100644 index 000000000..32bf94357 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__ctrl9/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__ctrl9 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__stage0/eval_grouped.yaml new file mode 100644 index 000000000..2884130e4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__stage0/eval_grouped.yaml @@ -0,0 +1,148 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d/ipsc/a549__mock +- name: fnet3d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper/ipsc/a549__mock +- name: unext2_2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__mock +- name: unext2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__mock +- name: pix2pix2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit/ipsc/a549__mock +- name: pix2pix3d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit/ipsc/a549__mock +- name: celldiff_2d__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d/ipsc/a549__mock +- name: celldiff_r2_iterative__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_r2_iterative/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_r2_iterative/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_r2_iterative/ipsc/a549__mock +- name: fnet2d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_spotlight/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_spotlight/ipsc/a549__mock +- name: fnet3d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_spotlight/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_spotlight/ipsc/a549__mock +- name: pix2pix2d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__mock +- name: pix2pix3d_spotlight__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1/eval_grouped.yaml new file mode 100644 index 000000000..f6840eada --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave1 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_ccond_iterative__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_ccond_iterative/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_ccond_iterative/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1a/eval_grouped.yaml new file mode 100644 index 000000000..5e8a81e6d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1a/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave1a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..f9774561a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave1b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..61905f50b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1c/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_last__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_last/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_last/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..8ee0a9b76 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave1d/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave1d (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock +- name: celldiff_2d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segaux/ipsc/a549__mock +- name: celldiff_2d_cjoint__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_cjoint/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_cjoint/ipsc/a549__mock +- name: fnet2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segauxself/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segauxself/ipsc/a549__mock +- name: celldiff_2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_segauxself/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..20e89b5c9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2a/eval_grouped.yaml @@ -0,0 +1,68 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2a (4 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock +- name: fnet3d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux/ipsc/a549__mock +- name: pix2pix2d_segauxself__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__mock +- name: pix2pix3d_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2b/eval_grouped.yaml new file mode 100644 index 000000000..59fce1f82 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..6889bb774 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2c/eval_grouped.yaml @@ -0,0 +1,68 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2c (4 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_seed1/ipsc/a549__mock +- name: unext2_2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__mock +- name: pix2pix2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__mock +- name: fnet3d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2d/eval_grouped.yaml new file mode 100644 index 000000000..69008a87b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2d/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock +- name: unext2_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..56e9af263 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2f/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2f (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2g/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2g/eval_grouped.yaml new file mode 100644 index 000000000..98ee244e5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2g/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2g (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_ccond__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_ccond/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_ccond/ipsc/a549__mock +- name: celldiff_segaux_iterative__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_segaux_iterative/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_segaux_iterative/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2h/eval_grouped.yaml new file mode 100644 index 000000000..01254a728 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2h/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2i/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2i/eval_grouped.yaml new file mode 100644 index 000000000..b26de29d9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2i/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2i (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2k/eval_grouped.yaml new file mode 100644 index 000000000..01c16c4f2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2k/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2k (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_cjoint_iterative__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_cjoint_iterative/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_cjoint_iterative/ipsc/a549__mock +- name: celldiff_2d_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2l/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2l/eval_grouped.yaml new file mode 100644 index 000000000..addeef501 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2l/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2l (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_doublew__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2m/eval_grouped.yaml new file mode 100644 index 000000000..263e05691 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2m/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_halfw__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2p/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2p/eval_grouped.yaml new file mode 100644 index 000000000..189c1b117 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2p/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2p (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..6ea858aa1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2q/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2q (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__mock +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__mock +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock +- name: unext2_v2_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2r/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2r/eval_grouped.yaml new file mode 100644 index 000000000..75e0eeab8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2r/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2r (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2u/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2u/eval_grouped.yaml new file mode 100644 index 000000000..19508f6fb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2u/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2u (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2y/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2y/eval_grouped.yaml new file mode 100644 index 000000000..13520d933 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave2y/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave2y (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bgflat__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_bgflat/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bgflat/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3d/eval_grouped.yaml new file mode 100644 index 000000000..b275b5d63 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3d/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave3d (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bglp__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_bglp/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bglp/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3e/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3e/eval_grouped.yaml new file mode 100644 index 000000000..255a52b97 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3e/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave3e (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux_seed1__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3n/eval_grouped.yaml new file mode 100644 index 000000000..1f625575b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_mock__wave3n/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_mock__wave3n (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__mock +- name: fnet3d_vscyto3daug_segaux_doublew__ipsc_trained__a549_mock + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-mock + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__mock/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__mock + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl1/eval_grouped.yaml new file mode 100644 index 000000000..a031c7b41 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl1/eval_grouped.yaml @@ -0,0 +1,58 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__ctrl1 (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_histmatch__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_paper_histmatch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_histmatch/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_histmatch/ipsc/a549__zikv +- name: pix2pix3d_v2_histmatch__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__zikv +- name: unext2_v2_histmatch__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl2/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl2/eval_grouped.yaml new file mode 100644 index 000000000..185cc816d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl2/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__ctrl2 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_seed1_e74__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl6/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl6/eval_grouped.yaml new file mode 100644 index 000000000..1dc5979fb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl6/eval_grouped.yaml @@ -0,0 +1,58 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__ctrl6 (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_cool38__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_v2_cool60__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_v2_cool100__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl8/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl8/eval_grouped.yaml new file mode 100644 index 000000000..51cf19098 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl8/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__ctrl8 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw_e76__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl9b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl9b/eval_grouped.yaml new file mode 100644 index 000000000..c17b26af5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__ctrl9b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__ctrl9b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__stage0/eval_grouped.yaml new file mode 100644 index 000000000..2eb751e1d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__stage0/eval_grouped.yaml @@ -0,0 +1,148 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d/ipsc/a549__zikv +- name: fnet3d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper/ipsc/a549__zikv +- name: unext2_2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch/ipsc/a549__zikv +- name: unext2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch/ipsc/a549__zikv +- name: pix2pix2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit/ipsc/a549__zikv +- name: pix2pix3d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit/ipsc/a549__zikv +- name: celldiff_2d__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d/ipsc/a549__zikv +- name: celldiff_r2_iterative__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_r2_iterative/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_r2_iterative/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_r2_iterative/ipsc/a549__zikv +- name: fnet2d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_spotlight/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_spotlight/ipsc/a549__zikv +- name: fnet3d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_spotlight/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_spotlight/ipsc/a549__zikv +- name: pix2pix2d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv +- name: pix2pix3d_spotlight__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1/eval_grouped.yaml new file mode 100644 index 000000000..5c08b5809 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave1 (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_ccond_iterative__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_ccond_iterative/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_ccond_iterative/ipsc/a549__zikv +- name: celldiff_2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1a/eval_grouped.yaml new file mode 100644 index 000000000..c75f1c338 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1a/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave1a (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..d7fc7aea6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave1b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..33947c4ea --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1c/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_last__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_last/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_last/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..0444d6b36 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave1d/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave1d (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv +- name: celldiff_2d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segaux/ipsc/a549__zikv +- name: celldiff_2d_cjoint__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_cjoint/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_cjoint/ipsc/a549__zikv +- name: fnet2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segauxself/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segauxself/ipsc/a549__zikv +- name: celldiff_2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_segauxself/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..326b5a2ae --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2a/eval_grouped.yaml @@ -0,0 +1,68 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2a (4 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv +- name: fnet3d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux/ipsc/a549__zikv +- name: pix2pix2d_segauxself__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv +- name: pix2pix3d_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2b/eval_grouped.yaml new file mode 100644 index 000000000..f5ed3f1a0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2b/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2b (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2c/eval_grouped.yaml new file mode 100644 index 000000000..a00d8bd6c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2c/eval_grouped.yaml @@ -0,0 +1,68 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2c (4 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_seed1/ipsc/a549__zikv +- name: unext2_2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/a549__zikv +- name: pix2pix2d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_seed1/ipsc/a549__zikv +- name: fnet3d_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2d/eval_grouped.yaml new file mode 100644 index 000000000..72a9e5613 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2d/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv +- name: unext2_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..c8a0fab15 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2f/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2f (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet2d_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2g/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2g/eval_grouped.yaml new file mode 100644 index 000000000..0b4f8540e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2g/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2g (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_ccond__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_ccond/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_ccond/ipsc/a549__zikv +- name: celldiff_segaux_iterative__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_segaux_iterative/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_segaux_iterative/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2h/eval_grouped.yaml new file mode 100644 index 000000000..472de482f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2h/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2i/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2i/eval_grouped.yaml new file mode 100644 index 000000000..49c0840ed --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2i/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2i (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2k/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2k/eval_grouped.yaml new file mode 100644 index 000000000..01e50c33f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2k/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2k (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_cjoint_iterative__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_cjoint_iterative/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_cjoint_iterative/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2l/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2l/eval_grouped.yaml new file mode 100644 index 000000000..215620adf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2l/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2l (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_doublew__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2m/eval_grouped.yaml new file mode 100644 index 000000000..17ebef890 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2m/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_halfw__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2p/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2p/eval_grouped.yaml new file mode 100644 index 000000000..0fc100d42 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2p/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2p (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..67ea716dd --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2q/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2q (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv +- name: unext2_v2_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2r/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2r/eval_grouped.yaml new file mode 100644 index 000000000..52e366fa0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2r/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2r (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2u/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2u/eval_grouped.yaml new file mode 100644 index 000000000..588156942 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2u/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2u (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2y/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2y/eval_grouped.yaml new file mode 100644 index 000000000..e40a7e7c3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave2y/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave2y (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bgflat__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_bgflat/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bgflat/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3d/eval_grouped.yaml new file mode 100644 index 000000000..367b6ad52 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3d/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave3d (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bglp__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/celldiff_2d_bglp/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bglp/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3e/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3e/eval_grouped.yaml new file mode 100644 index 000000000..79e24e557 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3e/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave3e (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux_seed1__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3n/eval_grouped.yaml new file mode 100644 index 000000000..3f784fda9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_a549_zikv__wave3n/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_a549_zikv__wave3n (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__zikv +- name: fnet3d_vscyto3daug_segaux_doublew__ipsc_trained__a549_zikv + benchmark: + dataset_ref: + dataset: a549-mantis-h2b-zikv + target: h2b + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__zikv/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/a549/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__zikv + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl2/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl2/eval_grouped.yaml new file mode 100644 index 000000000..17795380e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl2/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__ctrl2 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_seed1_e74__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl6/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl6/eval_grouped.yaml new file mode 100644 index 000000000..e94b824d4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl6/eval_grouped.yaml @@ -0,0 +1,58 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__ctrl6 (3 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2_cool38__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/ipsc +- name: fnet3d_vscyto3daug_v2_cool60__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/ipsc +- name: fnet3d_vscyto3daug_v2_cool100__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl8/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl8/eval_grouped.yaml new file mode 100644 index 000000000..2ba19fe9e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl8/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__ctrl8 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw_e76__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl9/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl9/eval_grouped.yaml new file mode 100644 index 000000000..df3ddd478 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__ctrl9/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__ctrl9 (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_e76__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__stage0/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__stage0/eval_grouped.yaml new file mode 100644 index 000000000..8b20ae46b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__stage0/eval_grouped.yaml @@ -0,0 +1,148 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__stage0 (12 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet2d/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d/ipsc/ipsc +- name: fnet3d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_paper/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper/ipsc/ipsc +- name: unext2_2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch/ipsc/ipsc +- name: unext2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch/ipsc/ipsc +- name: pix2pix2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix2d_unetvit/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit/ipsc/ipsc +- name: pix2pix3d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix3d_unetvit/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit/ipsc/ipsc +- name: celldiff_2d__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d/ipsc/ipsc +- name: celldiff_r2_iterative__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_r2_iterative/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_r2_iterative/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_r2_iterative/ipsc/ipsc +- name: fnet2d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet2d_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_spotlight/ipsc/ipsc +- name: fnet3d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_spotlight/ipsc/ipsc +- name: pix2pix2d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix2d_unetvit_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_spotlight/ipsc/ipsc +- name: pix2pix3d_spotlight__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix3d_unetvit_spotlight/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1a/eval_grouped.yaml new file mode 100644 index 000000000..da70b0d88 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1a/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave1a (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix2d_unetvit_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segaux/ipsc/ipsc +- name: pix2pix2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix2d_unetvit_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1b/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1b/eval_grouped.yaml new file mode 100644 index 000000000..1c54822ce --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1b/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave1b (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet2d_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux/ipsc/ipsc +- name: fnet2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet2d_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1c/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1c/eval_grouped.yaml new file mode 100644 index 000000000..c8b81e42f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1c/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave1c (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix2d_last__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix2d_unetvit_last/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_last/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1d/eval_grouped.yaml new file mode 100644 index 000000000..0ba0b4dc4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave1d/eval_grouped.yaml @@ -0,0 +1,98 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave1d (7 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc +- name: celldiff_2d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segaux/ipsc/ipsc +- name: celldiff_2d_cjoint__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_cjoint/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_cjoint/ipsc/ipsc +- name: fnet2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet2d_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segauxself/ipsc/ipsc +- name: celldiff_2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_segauxself/ipsc/ipsc +- name: unext2_2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc/ipsc +- name: celldiff_2d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2a/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2a/eval_grouped.yaml new file mode 100644 index 000000000..79f8dbc95 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2a/eval_grouped.yaml @@ -0,0 +1,108 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2a (8 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_cjoint_iterative__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_cjoint_iterative/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_cjoint_iterative/ipsc/ipsc +- name: celldiff_segaux_iterative__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_segaux_iterative/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_segaux_iterative/ipsc/ipsc +- name: unext2_2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc +- name: fnet3d_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_paper_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_seed1/ipsc/ipsc +- name: fnet3d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_paper_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux/ipsc/ipsc +- name: pix2pix2d_segauxself__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix2d_unetvit_segauxself/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix2d_unetvit_segauxself/ipsc/ipsc +- name: pix2pix3d_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux/ipsc/ipsc +- name: pix2pix3d_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2d/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2d/eval_grouped.yaml new file mode 100644 index 000000000..0392993ad --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2d/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2d (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc +- name: unext2_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2e/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2e/eval_grouped.yaml new file mode 100644 index 000000000..0ade1b089 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2e/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2e (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_ccond_iterative__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_ccond_iterative/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_ccond_iterative/ipsc/ipsc +- name: celldiff_2d_ccond__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_ccond/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_ccond/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2f/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2f/eval_grouped.yaml new file mode 100644 index 000000000..f4731482a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2f/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2f (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet2d_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet2d_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet2d_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2h/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2h/eval_grouped.yaml new file mode 100644 index 000000000..1230e34e8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2h/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2h (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_paper_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2i/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2i/eval_grouped.yaml new file mode 100644 index 000000000..2d36559a3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2i/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2i (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2l/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2l/eval_grouped.yaml new file mode 100644 index 000000000..8f266f514 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2l/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2l (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_doublew__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_paper_segaux_doublew/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_doublew/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2m/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2m/eval_grouped.yaml new file mode 100644 index 000000000..39de4f319 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2m/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2m (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_segaux_halfw__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_paper_segaux_halfw/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_paper_segaux_halfw/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2p/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2p/eval_grouped.yaml new file mode 100644 index 000000000..9eb1a86d3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2p/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2p (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: pix2pix3d_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2q/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2q/eval_grouped.yaml new file mode 100644 index 000000000..1620b060a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2q/eval_grouped.yaml @@ -0,0 +1,78 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2q (5 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_v2__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2/ipsc/ipsc +- name: fnet3d_vscyto3daug_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc +- name: fnet3d_vscyto3daug_segaux__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux/ipsc/ipsc +- name: fnet3d_vscyto3daug_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc +- name: unext2_v2_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2r/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2r/eval_grouped.yaml new file mode 100644 index 000000000..78b2237ac --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2r/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2r (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_sauna__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2u/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2u/eval_grouped.yaml new file mode 100644 index 000000000..0a12c5622 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2u/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2u (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_cldice__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2y/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2y/eval_grouped.yaml new file mode 100644 index 000000000..8a2a992f8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave2y/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave2y (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: celldiff_2d_bglp__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_bglp/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bglp/ipsc/ipsc +- name: celldiff_2d_bgflat__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/celldiff_2d_bgflat/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/celldiff_2d_bgflat/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave3e/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave3e/eval_grouped.yaml new file mode 100644 index 000000000..1cbebb224 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave3e/eval_grouped.yaml @@ -0,0 +1,38 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave3e (1 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: unext2_segaux_seed1__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave3n/eval_grouped.yaml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave3n/eval_grouped.yaml new file mode 100644 index 000000000..1ad25abb1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/leaf/grouped/spotlight_v2_nucleus_ipsc__wave3n/eval_grouped.yaml @@ -0,0 +1,48 @@ +# @package _global_ +# Spotlight-v2 bucket spotlight_v2_nucleus_ipsc__wave3n (2 conditions). Auto-generated by +# tools/generate_spotlight_v2_eval_configs.py from spotlight_v2_eval_roster.yaml; edit the roster, not this file. +# save_dir / pred_cache_dir live under /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2 +# (never the canonical dirs the paper reads); the GT caches are the shared manifest +# ones. Every pred_* artifact is forced. +target_name: nucleus +compute_feature_metrics: true +use_gpu: true +io: + require_complete_cache: false +runtime: + executor: serial + fov_workers: 1 + threads_per_worker: auto +force_recompute: + final_metrics: true + pred_masks: true + pred_cp: true + pred_dinov3: true + pred_dynaclr: true + pred_celldino: true + pred_morphem: true + pred_instances: true +compute_instance_ap: true +segmentation: + backend: cpdino +conditions: +- name: fnet3d_vscyto3daug_segaux_halfw__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/ipsc +- name: fnet3d_vscyto3daug_segaux_doublew__ipsc_trained__ipsc + benchmark: + dataset_ref: + dataset: aics-hipsc + target: nucleus + io: + pred_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/ipsc/prediction.zarr + pred_cache_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/ipsc/eval_cache_pred/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/ipsc + save: + save_dir: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/fnet2d_spotlight_fit.yml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/fnet2d_spotlight_fit.yml new file mode 100644 index 000000000..1605fca63 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/fnet2d_spotlight_fit.yml @@ -0,0 +1,37 @@ +# FNet2D Spotlight-loss fit overlay — model + trainer only. +# +# Identical to fnet2d_fit.yml except `loss_function`. The whole point of +# this arm is a matched comparison against the fnet2d baseline, so +# lr / schedule / precision / max_steps must NOT drift from it. If you change +# anything else here you have changed what the comparison measures. +# +# Mirrors fnet3d_spotlight_fit.yml but binds the fnet2d model recipe +# (in_stack_depth=1, downsample_z=false), exactly as fnet2d_fit.yml mirrors +# fnet3d_paper_fit.yml. +# +# Spotlight = masked MSE (supervision restricted to foreground voxels) + soft +# Dice on tunable-sigmoid-thresholded predictions. Kalinin et al. 2025, +# arXiv:2507.05383. Requires the leaf to set `data.init_args.fg_mask_key` and +# to Otsu-centre the TARGET normalization — see the train leaves. +base: + - ../../../../../../recipes/models/fnet2d.yml + - ../../../../../../recipes/trainer/fit.yml + - ../../../../../../recipes/topology/single_gpu.yml +seed_everything: 0 +model: + init_args: + loss_function: + class_path: viscy_utils.losses.SpotlightLoss + init_args: + lambda_mse: 0.5 + sigmoid_k: -0.95 + # NO fg_threshold. It is dead config here: SpotlightLoss.forward + # short-circuits on `if fg_mask is not None`, and the leaf sets + # fg_mask_key, so the threshold is never consulted. Setting 0.0 would + # imply the mask is derived at runtime from the target, which it is not + # — it is read from the store. + lr: 0.001 + schedule: Constant +trainer: + precision: 32-true + max_steps: 200000 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/fnet3d_spotlight_fit.yml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/fnet3d_spotlight_fit.yml new file mode 100644 index 000000000..65edbe4da --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/fnet3d_spotlight_fit.yml @@ -0,0 +1,35 @@ +# FNet3D Spotlight-loss fit overlay — model + trainer only. +# +# Identical to fnet3d_paper_fit.yml except `loss_function`. The whole point of +# this arm is a matched comparison against the fnet3d_paper baseline, so +# lr / schedule / precision / max_steps must NOT drift from it. If you change +# anything else here you have changed what the comparison measures. +# +# Spotlight = masked MSE (supervision restricted to foreground voxels) + soft +# Dice on tunable-sigmoid-thresholded predictions. Kalinin et al. 2025, +# arXiv:2507.05383. Requires the leaf to set `data.init_args.fg_mask_key` and +# to Otsu-centre the TARGET normalization — see the train leaves. +base: + - ../../../../../../recipes/models/fnet3d.yml + - ../../../../../../recipes/trainer/fit.yml + - ../../../../../../recipes/topology/single_gpu.yml +seed_everything: 0 +model: + init_args: + loss_function: + class_path: viscy_utils.losses.SpotlightLoss + init_args: + lambda_mse: 0.5 + sigmoid_k: -0.95 + # NO fg_threshold. It is dead config here: SpotlightLoss.forward + # short-circuits on `if fg_mask is not None`, and the leaf sets + # fg_mask_key, so the threshold is never consulted. Setting 0.0 would + # imply the mask is derived at runtime from the target, which it is not + # — it is read from the store. + lr: 0.001 + schedule: Constant + channels_last: true # see fnet3d_paper_fit.yml +trainer: + precision: 32-true + max_steps: 200000 + benchmark: true # see fnet3d_paper_fit.yml diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/pix2pix2d_unetvit_spotlight_fit.yml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/pix2pix2d_unetvit_spotlight_fit.yml new file mode 100644 index 000000000..0eb8d0ecb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/pix2pix2d_unetvit_spotlight_fit.yml @@ -0,0 +1,48 @@ +# pix2pix2d_unetvit Spotlight fit overlay — in-focus 2D benchmark track. +# +# Identical to pix2pix2d_unetvit_fit.yml except `recon_loss`. Everything else +# must stay pinned to that file: the arm exists to isolate the reconstruction +# objective against the Run-D pix2pix2d baseline. That baseline carries its +# three Run-D deltas (lambda_l1: 10.0, lecam_gamma: 0.3, max_epochs: 40) HERE +# rather than in the leaf, unlike the 3D family — so they are repeated below +# and the spotlight leaves must NOT restate them. +# +# `recon_loss` replaces the L1 term UNDER the existing `lambda_l1` weight, +# which was tuned for L1's magnitude. See +# pix2pix3d_unetvit_spotlight_fit_ddp_modernized.yml for the calibration risk +# this creates and how it is monitored. +# +# Read pix2pix2d_unetvit_fit.yml for the rationale behind every other knob +# here (Run-D vs LSGAN, 4-GPU topology, the bf16-mixed / GradScaler argument, +# warmup_steps, seed_everything). None of it is restated. +base: + - ../../../../../../recipes/models/pix2pix2d_unetvit.yml + - ../../../../../../recipes/trainer/fit.yml + - ../../../../../../recipes/topology/ddp_4gpu_gan.yml +model: + init_args: + loss_type: nonsat + lambda_adv: 1.0 + r1_gamma: 10.0 + r2_gamma: 0.0 + r1_every: 16 + ema_kimg: 10.0 + lecam_gamma: 0.3 + lecam_decay: 0.9 + lambda_l1: 10.0 + use_ema_at_predict: true + lr_g: 2.0e-4 + lr_d: 2.0e-4 + schedule: WarmupCosine + warmup_steps: 8500 + warmup_multiplier: 1e-3 + recon_loss: + class_path: viscy_utils.losses.SpotlightLoss + init_args: + lambda_mse: 0.5 + sigmoid_k: -0.95 + # NO fg_threshold — inert when the leaf sets fg_mask_key; see + # fnet3d_spotlight_fit.yml for why setting it would be misleading. +trainer: + precision: bf16-mixed + max_epochs: 40 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/pix2pix3d_unetvit_spotlight_fit_ddp_modernized.yml b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/pix2pix3d_unetvit_spotlight_fit_ddp_modernized.yml new file mode 100644 index 000000000..6b3adae96 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/_internal/shared/model/model_overlays/pix2pix3d_unetvit_spotlight_fit_ddp_modernized.yml @@ -0,0 +1,51 @@ +# pix2pix3d_unetvit Spotlight fit overlay — modernized recipe, 4-GPU DDP variant. +# +# Identical to pix2pix3d_unetvit_fit_ddp_modernized.yml except `recon_loss`. +# Everything else must stay pinned to that file: the arm exists to isolate the +# reconstruction objective against the Run-D pix2pix3d baseline. +# +# ⚠ This overlay does NOT carry the three Run-D deltas (lambda_l1: 10.0, +# lecam_gamma: 0.3, max_epochs: 40) — they live in the LEAF +# (train_4gpu_modernized.yml) on the 3D side, unlike the 2D family where they +# are baked into the overlay. The spotlight leaves therefore repeat that block +# verbatim. Copying this overlay alone would silently give lambda_l1=100 (the +# model recipe default), LeCam 0 and 20 epochs — not a matched comparison, and +# it would invalidate the loss-calibration analysis, which is written entirely +# around lambda_l1 = 10. +# +# `recon_loss` replaces the L1 term UNDER the existing `lambda_l1` weight. That +# weight was tuned for L1's magnitude, so the swap re-balances the generator +# objective against the adversarial term. It is the campaign's main calibration +# risk: watch `loss/g_recon_masked_mse_train` / `loss/g_recon_dice_train` +# against the baseline at matched validation residual — NOT at matched step, +# where the ratio reads clean for the wrong reason. +base: + - ../../../../../../recipes/models/pix2pix3d_unetvit.yml + - ../../../../../../recipes/trainer/fit.yml + - ../../../../../../recipes/topology/ddp_4gpu_gan.yml +model: + init_args: + loss_type: nonsat + lambda_adv: 1.0 + r1_gamma: 10.0 + r2_gamma: 0.0 + r1_every: 16 + ema_kimg: 10.0 + lecam_gamma: 0.0 + lecam_decay: 0.9 + use_ema_at_predict: true + lr_g: 2.0e-4 + lr_d: 2.0e-4 + schedule: WarmupCosine + warmup_steps: 8500 + warmup_multiplier: 1e-3 + recon_loss: + class_path: viscy_utils.losses.SpotlightLoss + init_args: + lambda_mse: 0.5 + sigmoid_k: -0.95 + # NO fg_threshold — inert when the leaf sets fg_mask_key; see + # fnet3d_spotlight_fit.yml for why setting it would be misleading. +trainer: + precision: bf16-mixed + max_epochs: 20 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..82801719c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (er, SEC61B): trained on iPSC, predicting a549_mantis_denv. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml + - ../../../_internal/shared/model/targets/er_sec61b.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug__a549_mantis_sec61b_denv + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..e3e89edf6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (er, SEC61B): trained on iPSC, predicting a549_mantis_mock. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml + - ../../../_internal/shared/model/targets/er_sec61b.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug__a549_mantis_sec61b_mock + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..98b203c5d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (er, SEC61B): trained on iPSC, predicting a549_mantis_zikv. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml + - ../../../_internal/shared/model/targets/er_sec61b.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug__a549_mantis_sec61b_zikv + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..11c6d455b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (er, SEC61B): trained on iPSC, predicting ipsc_confocal. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/er_sec61b.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/ipsc/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_SEC61B + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/train.yml new file mode 100644 index 000000000..b523616e2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug/ipsc_confocal/train.yml @@ -0,0 +1,56 @@ +# FNet3D "same-augmentations" recipe (Phase 15 Arm B) on er (SEC61B marker) — AICS iPSC confocal. +# Template baseline for the Spotlight-v2 Stage 2 #5 arms (generate_spotlight_v2_leaves.py emits +# fnet3d_vscyto3daug_{v2,v2_seed1,segaux,segaux_sauna,segaux_cldice} from it); never run as-is. +# Same recipe as nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml; the target channel is +# Structure, so the data overlay's Structure-keyed norm/aug/val lists apply unchanged. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/er_sec61b.yml + - ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug + +trainer: + # Switch off the fnet3d_paper 32-true default: bf16-mixed halves the + # 384x384x32 activation footprint. MSE loss is immune to the bf16-SSIM + # cancellation issue. Must match fnet3d_bigpatch (Arm A) for a clean + # augmentation-only comparison. + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: "epoch={epoch}-step={step}-loss={loss/validate:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug/checkpoints + +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug + # 384x384x32 at bf16-mixed measured ~41GB GPU on the bigpatch arm, so an + # 80GB card (H100) fits with room; allow h100|h200 to schedule sooner. The + # vscyto3d aug stack (affine grid_sample + intensity) runs somewhat higher + # but still well under 80GB. SEC61B.zarr-backed preload pushes MaxVMSize past + # the shared 256G cap; mem 512G matches the fnet3d iPSC headroom. + sbatch: + constraint: "h100|h200" + mem: "512G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..d5045e81d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug_segaux + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_sec61b_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..bbebb0faf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug_segaux + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_sec61b_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..f8272e07e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug_segaux + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_sec61b_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..3f8b5b9a2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..5f3b56d0b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml @@ -0,0 +1,54 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.22 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..7e5aa2fc3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_sec61b_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..53d102722 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_sec61b_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..7d3d484c2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_sec61b_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..953a6a6ab --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml new file mode 100644 index 000000000..043015f33 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml @@ -0,0 +1,57 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (fit) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice topology=cldice (0.5 Dice + 0.5 soft-clDice, 5 skeleton iterations) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B_segaux_cldice + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B_segaux_cldice + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_cldice + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + topology: cldice + cldice_alpha: 0.5 + cldice_iters: 5 + seg_aux_weight: 0.24 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..5f18184cd --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_sec61b_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..c387c0f3f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_sec61b_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..fdca4b713 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_sec61b_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..a08139b38 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml new file mode 100644 index 000000000..cf9f4aa49 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml @@ -0,0 +1,59 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (fit) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice weighting=sauna (Dice sums weighted by |SAUNA h map| of the patch mask, iPSC voxel size) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B_segaux_sauna + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B_segaux_sauna + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_sauna + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + weighting: sauna + spacing: + - 0.29 + - 0.108 + - 0.108 + seg_aux_weight: 0.21 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..bec986053 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_sec61b_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..501d3bed6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_sec61b_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..5f0fc3d71 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_sec61b_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..7b1325b29 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..dd832c5ab --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_segaux_seed1 + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.22 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..1404731ed --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug_v2 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_sec61b_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..a0d0d2833 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug_v2 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_sec61b_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..29f701e5d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug_v2 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_sec61b_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..12b415a17 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..ab48ea3c1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2 + sbatch: + constraint: h100|h200 + mem: 512G diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..ebfed50b7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_denv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_denv + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_sec61b_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_denv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..1548852ef --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_mock.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_mock + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_sec61b_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_mock_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..b7110d004 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_sec61b_zikv.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: a549_mantis_sec61b_zikv + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_sec61b_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_ON_A549_sec61b_zikv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..bfc0d7da9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_SEC61B_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/er/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..646824ee6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/er/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf er/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/er_sec61b.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: er + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: er__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_SEC61B_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_SEC61B_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/er/fnet3d_vscyto3daug_v2_seed1 + sbatch: + constraint: h100|h200 + mem: 512G +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..17cbbe2b5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: celldiff_2d_bgflat + experiment_id: membrane__ipsc_confocal__celldiff_2d_bgflat__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_DENV_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..414995891 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: celldiff_2d_bgflat + experiment_id: membrane__ipsc_confocal__celldiff_2d_bgflat__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_MOCK_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..83e3bc9d7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: celldiff_2d_bgflat + experiment_id: membrane__ipsc_confocal__celldiff_2d_bgflat__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_ZIKV_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..2a0efb8a7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_bgflat + experiment_id: membrane__ipsc_confocal__celldiff_2d_bgflat__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_IPSC_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bgflat/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/train.yml new file mode 100644 index 000000000..4a2b34006 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bgflat/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (fit) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model target_bg_lowpass (BackgroundLowPass sigma_lp=None, sigma_feather=2.0, dilate_radius=4), a training-only target transform; validation and prediction see the raw target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: celldiff_2d_bgflat + experiment_id: membrane__ipsc_confocal__celldiff_2d_bgflat + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_MEMB_bgflat + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat/checkpoints +launcher: + job_name: CELLDiff2D_MEMB_bgflat + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bgflat + sbatch: + mem: 128G +model: + init_args: + target_bg_lowpass: + class_path: viscy_utils.losses.BackgroundLowPass + init_args: + sigma_lp: null + sigma_feather: 2.0 + dilate_radius: 4 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..beda587d3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: celldiff_2d_bglp + experiment_id: membrane__ipsc_confocal__celldiff_2d_bglp__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_DENV_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..4655d7af9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: celldiff_2d_bglp + experiment_id: membrane__ipsc_confocal__celldiff_2d_bglp__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_MOCK_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..38965c053 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: celldiff_2d_bglp + experiment_id: membrane__ipsc_confocal__celldiff_2d_bglp__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_ZIKV_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..8e6b75016 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_bglp + experiment_id: membrane__ipsc_confocal__celldiff_2d_bglp__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_IPSC_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_bglp/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/train.yml new file mode 100644 index 000000000..b6e14e5a4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_bglp/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (fit) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model target_bg_lowpass (BackgroundLowPass sigma_lp=2.0, sigma_feather=1.0, dilate_radius=2), a training-only target transform; validation and prediction see the raw target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: celldiff_2d_bglp + experiment_id: membrane__ipsc_confocal__celldiff_2d_bglp + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_MEMB_bglp + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp/checkpoints +launcher: + job_name: CELLDiff2D_MEMB_bglp + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_bglp + sbatch: + mem: 128G +model: + init_args: + target_bg_lowpass: + class_path: viscy_utils.losses.BackgroundLowPass + init_args: + sigma_lp: 2.0 + sigma_feather: 1.0 + dilate_radius: 2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index dbd842ccd..36186351d 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index d6467801c..9cb6edac6 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index f9de567c5..cd92a4c2c 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml index 7d32abef6..8b94a6afa 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/train.yml index 394de7b2e..269ae3c83 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..8ffa22a10 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: celldiff_2d_segaux + experiment_id: membrane__ipsc_confocal__celldiff_2d_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..0b0b0b681 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: celldiff_2d_segaux + experiment_id: membrane__ipsc_confocal__celldiff_2d_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..43b617947 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: celldiff_2d_segaux + experiment_id: membrane__ipsc_confocal__celldiff_2d_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..fe2f04373 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_segaux + experiment_id: membrane__ipsc_confocal__celldiff_2d_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_IPSC_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..a459106be --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segaux/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: celldiff_2d_segaux + experiment_id: membrane__ipsc_confocal__celldiff_2d_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_MEMB_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux/checkpoints +launcher: + job_name: CELLDiff2D_MEMB_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segaux + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.58 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..feae18f8a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: celldiff_2d_segauxself + experiment_id: membrane__ipsc_confocal__celldiff_2d_segauxself__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..62c6e24e3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: celldiff_2d_segauxself + experiment_id: membrane__ipsc_confocal__celldiff_2d_segauxself__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..4d1f72572 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: celldiff_2d_segauxself + experiment_id: membrane__ipsc_confocal__celldiff_2d_segauxself__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_A549_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..2ed1a4df8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_segauxself + experiment_id: membrane__ipsc_confocal__celldiff_2d_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_MEMB_ON_IPSC_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_2d_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..a2814b1cb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_2d_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,70 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf membrane/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: celldiff_2d_segauxself + experiment_id: membrane__ipsc_confocal__celldiff_2d_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_MEMB_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself/checkpoints +launcher: + job_name: CELLDiff2D_MEMB_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_2d_segauxself + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 0.58 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..a55134b7e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: celldiff_segaux + experiment_id: membrane__ipsc_confocal__celldiff_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_MEMB_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..b08d7ca11 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: celldiff_segaux + experiment_id: membrane__ipsc_confocal__celldiff_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff_PRED_MEMB_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..7ce51fae1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: celldiff_segaux + experiment_id: membrane__ipsc_confocal__celldiff_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_MEMB_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__ipsc_confocal__iterative.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__ipsc_confocal__iterative.yml new file mode 100644 index 000000000..7421a5aa7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/predict__ipsc_confocal__iterative.yml @@ -0,0 +1,46 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/celldiff/ipsc_confocal/predict__ipsc_confocal__iterative.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_segaux + experiment_id: membrane__ipsc_confocal__celldiff_segaux__ipsc_confocal__iterative +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 40 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff_PRED_MEMB_ITER_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/celldiff_segaux_iterative/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..366306cb4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/celldiff_segaux/ipsc_confocal/train.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/celldiff/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_h200_single.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: celldiff_segaux + experiment_id: membrane__ipsc_confocal__celldiff_segaux +trainer: + logger: + init_args: + name: CELLDiff_iPSC_MEMB_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux/checkpoints +launcher: + job_name: CELLDiff_MEMB_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/celldiff_segaux +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 1.0 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..e21033bc4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `jointsteps` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_jointsteps + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_jointsteps__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_jointsteps/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_jointsteps + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc_confocal/train.yml new file mode 100644 index 000000000..962d0fac3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_jointsteps/ipsc_confocal/train.yml @@ -0,0 +1,61 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `jointsteps` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: trainer max_epochs: 320. Step budget matched to the joint membrane run, measured from final checkpoints: baseline latest-epoch=199-step=100000 (500 steps/ep), joint latest-epoch=199-step=160000 (800 steps/ep); 320 x 500 = 160000. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_jointsteps + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_jointsteps + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_jointsteps + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_jointsteps + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_jointsteps/checkpoints + max_epochs: 320 +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_jointsteps + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_jointsteps + sbatch: + mem: 128G diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..27775678f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto2d_scratch_l1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_DENV_l1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..06d9db20a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto2d_scratch_l1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_MOCK_l1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..6d08bb851 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto2d_scratch_l1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_ZIKV_l1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..bef9b3f43 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_l1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_l1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/train.yml new file mode 100644 index 000000000..f66f7d163 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1/ipsc_confocal/train.yml @@ -0,0 +1,68 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: MixedLoss l1_alpha 1.0 / l2_alpha 0.0 / ms_dssim_alpha 0.0 (L1 only). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_l1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1 + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_l1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_l1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1 + sbatch: + mem: 128G +model: + init_args: + loss_function: + class_path: viscy_utils.losses.MixedLoss + init_args: + l1_alpha: 1.0 + l2_alpha: 0.0 + ms_dssim_alpha: 0.0 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..22124e6e3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto2d_scratch_l1seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_DENV_l1seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..329d68184 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto2d_scratch_l1seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_MOCK_l1seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..23e7f7f41 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto2d_scratch_l1seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_ZIKV_l1seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..5366644d3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_l1seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_l1seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..9c48ec7c8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1seed1/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1seed1` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the l1 arm's MixedLoss (L1 only) + seed_everything: 1 (noise floor for l1segaux vs l1). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_l1seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1seed1 + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_l1seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_l1seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1seed1 + sbatch: + mem: 128G +model: + init_args: + loss_function: + class_path: viscy_utils.losses.MixedLoss + init_args: + l1_alpha: 1.0 + l2_alpha: 0.0 + ms_dssim_alpha: 0.0 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..b2930eada --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto2d_scratch_l1segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_DENV_l1segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..71dc76ddf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto2d_scratch_l1segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_MOCK_l1segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..8a04725e8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto2d_scratch_l1segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_ZIKV_l1segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..068ce1b4e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_l1segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_l1segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..e97c483fa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_l1segaux/ipsc_confocal/train.yml @@ -0,0 +1,74 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `l1segaux` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the l1 arm's MixedLoss (L1 only) + data fg_mask_key: fg_mask + model seg_aux (SegAuxDice c=0.1) + seg_aux_weight. Its baseline is the l1 probe, from which it differs by the seg-aux term only. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_l1segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_l1segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_l1segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_l1segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_l1segaux + sbatch: + mem: 128G +model: + init_args: + loss_function: + class_path: viscy_utils.losses.MixedLoss + init_args: + l1_alpha: 1.0 + l2_alpha: 0.0 + ms_dssim_alpha: 0.0 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.18 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..6ee5f4a8c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `safecrop` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_safecrop + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_safecrop__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_safecrop/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_safecrop + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc_confocal/train.yml new file mode 100644 index 000000000..89e6fdf13 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_safecrop/ipsc_confocal/train.yml @@ -0,0 +1,131 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `safecrop` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: affine safe_crop_size [1, 384, 384] + safe_crop_coverage 0.9. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_safecrop + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_safecrop + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 + gpu_augmentations: + - class_path: viscy_transforms.BatchedRandAffined + init_args: + keys: + - source + - target + prob: 0.8 + rotate_range: + - 0 + - 0 + - 0 + shear_range: + - 0.0 + - 0.05 + - 0.05 + scale_range: + - - 1 + - 1 + - - 0.5 + - 1.5 + - - 0.5 + - 1.5 + safe_crop_size: + - 1 + - 384 + - 384 + safe_crop_coverage: 0.9 + - class_path: viscy_transforms.BatchedCenterSpatialCropd + init_args: + keys: + - source + - target + roi_size: + - 1 + - 384 + - 384 + - class_path: viscy_transforms.BatchedRandAdjustContrastd + init_args: + keys: + - source + prob: 0.5 + gamma: + - 0.8 + - 1.2 + - class_path: viscy_transforms.BatchedRandScaleIntensityd + init_args: + keys: + - source + prob: 0.5 + factors: 0.5 + - class_path: viscy_transforms.BatchedRandGaussianNoised + init_args: + keys: + - source + prob: 0.5 + mean: 0.0 + std: 0.3 + - class_path: viscy_transforms.BatchedRandGaussianSmoothd + init_args: + keys: + - source + prob: 0.5 + sigma_x: + - 0.25 + - 0.75 + sigma_y: + - 0.25 + - 0.75 + sigma_z: + - 0 + - 0 +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_safecrop + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_safecrop + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_safecrop/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_safecrop + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_safecrop + sbatch: + mem: 128G diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index 9b054d7ec..6a9978cee 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index f2d37b9c5..875fa5b80 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index 7a3dec1ca..1b1d4279b 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml index 3aa5c3a2a..a48e96775 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml index e0533178d..4d93b1c0a 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..97685982a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..c157623e6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..6cf70c3f7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..6b01dbe81 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..82b500488 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/train.yml @@ -0,0 +1,68 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segaux + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.36 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..085c5888d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..848f2e945 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..e93d8017f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_A549_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..2fd4c8f16 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_MEMB_ON_IPSC_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..60370992f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf membrane/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: membrane__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Membrane_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Membrane_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto2d_scratch_segauxself + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 0.36 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..31e05e90c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..ed5827a41 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..04d7ab87d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..4588a835d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..31b48a982 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/train.yml @@ -0,0 +1,63 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Membrane_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Membrane_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.86 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..040606507 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cpout` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto3d_scratch_segaux_cpout + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_cpout__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_DENV_segaux_cpout + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..6182e3cc1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cpout` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto3d_scratch_segaux_cpout + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_cpout__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_MOCK_segaux_cpout + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..2e6e70022 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cpout` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto3d_scratch_segaux_cpout + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_cpout__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_ZIKV_segaux_cpout + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..ca1fdea7d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cpout` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_cpout + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_cpout__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_segaux_cpout + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/train.yml new file mode 100644 index 000000000..560b5e209 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/train.yml @@ -0,0 +1,67 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cpout` arm (fit) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + data fg_mask_key: fg_mask_cpout, a thin-wall target from cpdino whole-cell outer outlines on the GT membrane within a wall band, canonical mask outside (recipe in experiments/2026-09-24_spotlight-v2/b3b_cpout/cpout_target.py), read from the derived training store /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_b3b/ipsc/train/cell_cpout.zarr (dataset_ref: null, data_path and channels inline) at its own seg_aux_weight. +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_cpout + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_cpout + dataset_ref: null +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask_cpout + data_path: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_b3b/ipsc/train/cell_cpout.zarr + source_channel: Phase3D + target_channel: Membrane +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Membrane_segaux_cpout + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Membrane_segaux_cpout + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_cpout +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.55 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..994a8046c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto3d_scratch_segaux_sauna + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_sauna__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_DENV_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..35087aa2d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto3d_scratch_segaux_sauna + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_sauna__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_MOCK_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..756f2d6e8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto3d_scratch_segaux_sauna + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_sauna__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_ZIKV_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..05d2b27d3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_sauna + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_sauna__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/train.yml new file mode 100644 index 000000000..b771ed215 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/train.yml @@ -0,0 +1,68 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (fit) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice weighting=sauna (Dice sums weighted by |SAUNA h map| of the patch mask, iPSC voxel size) at its own calibrated seg_aux_weight. +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_sauna + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_sauna +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Membrane_segaux_sauna + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Membrane_segaux_sauna + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_sauna +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + weighting: sauna + spacing: + - 0.29 + - 0.108 + - 0.108 + seg_aux_weight: 0.75 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..a9d5869fa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_DENV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..fc012a65b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_MOCK_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..71c892481 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_ZIKV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..183c8af51 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..48e9a7db9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,64 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1 +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Membrane_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Membrane_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_segaux_seed1 +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.86 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..5a4583ef1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_DENV_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..bda898236 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_MOCK_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..4bbbcd897 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_ZIKV_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..d41451548 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..01ae85269 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2/ipsc_confocal/train.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2 +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Membrane_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Membrane_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..fadd700b6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_DENV_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..068f6be31 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_MOCK_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..feef54606 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_ON_A549_ZIKV_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..688ca4cd7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_MEMB_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..2a5dd357c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,56 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf membrane/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: membrane__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1 +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Membrane_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Membrane_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fcmae_vscyto3d_scratch_v2_seed1 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index 2f6b73441..bc7dc9b99 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index 12c978f8b..70c0366ee 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index f70c9872e..380a0ef2e 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml index 41470244b..c9d83648f 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/train.yml index 4a7f182bd..cb2626688 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf membrane/fnet2d/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf membrane/fnet2d/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..eaf02295f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fnet2d_segaux + experiment_id: membrane__ipsc_confocal__fnet2d_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..969cdf39e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fnet2d_segaux + experiment_id: membrane__ipsc_confocal__fnet2d_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..0cc87971b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fnet2d_segaux + experiment_id: membrane__ipsc_confocal__fnet2d_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..35a178a44 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_segaux + experiment_id: membrane__ipsc_confocal__fnet2d_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..e335ce37e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux/ipsc_confocal/train.yml @@ -0,0 +1,93 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/fnet2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fnet2d_segaux + experiment_id: membrane__ipsc_confocal__fnet2d_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Membrane + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Membrane + roi_size: + - 1 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet2D_iPSC_MEMB_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux/checkpoints +launcher: + job_name: FNet2D_MEMB_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.63 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..41a99e1b4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fnet2d_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fnet2d_segaux_seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_DENV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..8b778a920 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fnet2d_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fnet2d_segaux_seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_MOCK_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..0acca020b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fnet2d_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fnet2d_segaux_seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_ZIKV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..fa772aae0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fnet2d_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..92a32e835 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,94 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf membrane/fnet2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fnet2d_segaux_seed1 + experiment_id: membrane__ipsc_confocal__fnet2d_segaux_seed1 + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Membrane + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Membrane + roi_size: + - 1 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet2D_iPSC_MEMB_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1/checkpoints +launcher: + job_name: FNet2D_MEMB_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segaux_seed1 + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.63 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..f724cc1e8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fnet2d_segauxself + experiment_id: membrane__ipsc_confocal__fnet2d_segauxself__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..60ccb94f8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fnet2d_segauxself + experiment_id: membrane__ipsc_confocal__fnet2d_segauxself__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..999575d33 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fnet2d_segauxself + experiment_id: membrane__ipsc_confocal__fnet2d_segauxself__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..20655b592 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_segauxself + experiment_id: membrane__ipsc_confocal__fnet2d_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet2D_PRED_MEMB_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..7e7926b2f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,94 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf membrane/fnet2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fnet2d_segauxself + experiment_id: membrane__ipsc_confocal__fnet2d_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Membrane + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Membrane + roi_size: + - 1 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet2D_iPSC_MEMB_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself/checkpoints +launcher: + job_name: FNet2D_MEMB_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_segauxself + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 0.63 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..1cefa2d2c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,65 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: membrane (MEMB) trained on ipsc_confocal, tested on A549 mantis denv. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fnet2d_spotlight + experiment_id: membrane__ipsc_confocal__fnet2d_spotlight__a549_mantis_caax_denv + # Override the iPSC-side `membrane` target with a549's gene-keyed `caax`. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_MEMB_DENV + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..da37ebe3b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,65 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: membrane (MEMB) trained on ipsc_confocal, tested on A549 mantis mock. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fnet2d_spotlight + experiment_id: membrane__ipsc_confocal__fnet2d_spotlight__a549_mantis_caax_mock + # Override the iPSC-side `membrane` target with a549's gene-keyed `caax`. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_MEMB_MOCK + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..237b72952 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,65 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: membrane (MEMB) trained on ipsc_confocal, tested on A549 mantis zikv. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fnet2d_spotlight + experiment_id: membrane__ipsc_confocal__fnet2d_spotlight__a549_mantis_caax_zikv + # Override the iPSC-side `membrane` target with a549's gene-keyed `caax`. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_MEMB_ZIKV + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..7d5c3aab4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,62 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: membrane (MEMB) trained on ipsc_confocal, tested on iPSC confocal. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_spotlight + experiment_id: membrane__ipsc_confocal__fnet2d_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/ipsc/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_MEMB + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet2d_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..d80e3d719 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet2d_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,113 @@ +# FNet2D (FNet3D run Z-preserving at Z=1) fit on membrane (Membrane channel) +# — AICS iPSC confocal, in-focus 2D track. Mirror of the 3D +# membrane/fnet3d_paper/ipsc_confocal fit leaf, flattened onto the offline +# 5-plane in-focus slab store cell_focus.zarr (z_window_size=1 emits one +# in-focus window per plane). +# +# The 3D ipsc leaf resolves data_path/source_channel/target_channel from the +# manifest via benchmark.dataset_ref, which points at the NON-focus +# cell.zarr. The 2D track reads cell_focus.zarr instead, so the resolver is +# disabled here (dataset_ref: null) and the three data fields are declared +# inline — the resolver hook raises on any data.init_args field co-declared +# with a full dataset_ref. source_channel/target_channel reproduce the +# resolver's manifest output (Phase3D / Membrane). +# +# The fnet2d data overlay keys norm/aug/val_aug on Structure (the ER/Mito +# target), so we list-replace those three lists here to re-key to Membrane, +# flattening the crops [32,64,64] -> [1,64,64]. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_spotlight_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fnet2d_spotlight + experiment_id: membrane__ipsc_confocal__fnet2d_spotlight + # Disable the manifest resolver: the 2D track reads the offline focus + # store, not the manifest-registered cell.zarr. dataset_ref: null makes + # the compose hook a no-op so data fields can be declared inline. + dataset_ref: null + +data: + init_args: + # iPSC in-focus slab store + channels — resolver disabled above. + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `std`, unchanged from this family's baseline -- + # change the subtrahend, NEVER the divisor: it sets the scale of the only + # band where the Dice term has any gradient. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Membrane] + level: fov_statistics + subtrahend: otsu_threshold + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: [Phase3D, Membrane] + w_key: Membrane + spatial_size: [1, 64, 64] + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: [Phase3D, Membrane] + roi_size: [1, 64, 64] + +trainer: + logger: + init_args: + name: FNet2D_iPSC_MEMB_spotlight + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: "epoch={epoch}-step={step}-loss={loss/validate:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight/checkpoints + +launcher: + job_name: FNet2DSpotlight_MEMB + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet2d_spotlight + # 128G: the in-focus slab store is a 5-plane slice of the full-Z 3D store + # (~1/4 the Z), so the 512G headroom the 3D leaf needed for cell.zarr + # mmap_preload is wasteful and delays scheduling. + sbatch: + mem: "128G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..cc54c7f74 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet3d_paper/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fnet3d_paper_segaux + experiment_id: membrane__ipsc_confocal__fnet3d_paper_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_MEMB_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..9ec1dd5b3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet3d_paper/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fnet3d_paper_segaux + experiment_id: membrane__ipsc_confocal__fnet3d_paper_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_MEMB_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..c532fad68 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet3d_paper/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fnet3d_paper_segaux + experiment_id: membrane__ipsc_confocal__fnet3d_paper_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_MEMB_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..a3edf37b0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/fnet3d_paper/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_paper_segaux + experiment_id: membrane__ipsc_confocal__fnet3d_paper_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_MEMB_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_paper_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..e924c5787 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_paper_segaux/ipsc_confocal/train.yml @@ -0,0 +1,89 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/fnet3d_paper/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fnet3d_paper_segaux + experiment_id: membrane__ipsc_confocal__fnet3d_paper_segaux +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Membrane + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 32 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Membrane + roi_size: + - 32 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet3D_iPSC_MEMB_paper_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux/checkpoints +launcher: + job_name: FNet3DPaper_MEMB_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_paper_segaux + sbatch: + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..abb87e1bd --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,58 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: membrane trained on iPSC, predicting against a549-mantis-caax-denv test. +# A549 manifest keys membrane by gene (`caax`); override the iPSC-side `membrane` +# target_id from targets/membrane.yml so the resolver finds the caax target on +# a549-mantis-caax-denv. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: fnet3d_spotlight + experiment_id: membrane__ipsc_confocal__fnet3d_spotlight__a549_mantis_caax_denv + # Override the iPSC-side `membrane` target to a549's gene-keyed `caax`. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_MEMB_ON_A549_DENV + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..fdbe094c5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,58 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: membrane trained on iPSC, predicting against a549-mantis-caax-mock test. +# A549 manifest keys membrane by gene (`caax`); override the iPSC-side `membrane` +# target_id from targets/membrane.yml so the resolver finds the caax target on +# a549-mantis-caax-mock. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: fnet3d_spotlight + experiment_id: membrane__ipsc_confocal__fnet3d_spotlight__a549_mantis_caax_mock + # Override the iPSC-side `membrane` target to a549's gene-keyed `caax`. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_MEMB_ON_A549_MOCK + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..a56b433ec --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,58 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: membrane trained on iPSC, predicting against a549-mantis-caax-zikv test. +# A549 manifest keys membrane by gene (`caax`); override the iPSC-side `membrane` +# target_id from targets/membrane.yml so the resolver finds the caax target on +# a549-mantis-caax-zikv. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: fnet3d_spotlight + experiment_id: membrane__ipsc_confocal__fnet3d_spotlight__a549_mantis_caax_zikv + # Override the iPSC-side `membrane` target to a549's gene-keyed `caax`. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_MEMB_ON_A549_ZIKV + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__hek_mantis_kras_a549xy.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__hek_mantis_kras_a549xy.yml new file mode 100644 index 000000000..9c7825b21 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__hek_mantis_kras_a549xy.yml @@ -0,0 +1,48 @@ +# fnet3d_spotlight predict: membrane trained on ipsc_confocal, +# predicting against the HEK293T third-cell-type probe (KRAS, a549xy geometry). +# Auto-generated by tools/generate_hek_predict_configs.py from +# membrane/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml — checkpoint and the sibling's +# data/model init_args (normalizations, predict hparams) and prediction-writer +# args lifted verbatim. +# Fit verified to train against a raw (non-deconvolved) GT channel. +# Evaluation-only: no HEK training. Path token is 'fnet3d_spotlight' (config dir 'fnet3d_spotlight'). +base: +- ../../../_internal/shared/model/predict_sets/hek_mantis_kras_a549xy.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: hek_mantis_kras_a549xy + model_name: fnet3d_spotlight + experiment_id: membrane__ipsc_confocal__fnet3d_spotlight__hek_mantis_kras_a549xy + dataset_ref: + target: kras +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/hek__a549xy/prediction.zarr +launcher: + job_name: FNET3D_SPOTLIGHT_PRED_MEMBRANE_IPSCTR_HEK + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/hek__a549xy + sbatch: + constraint: a40|l40s|a6000|a100|h100|h200 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..9ae3a5bab --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,52 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: membrane against ipsc_confocal test_cropped. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_spotlight + experiment_id: membrane__ipsc_confocal__fnet3d_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/ipsc/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_MEMB + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/fnet3d_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..b9aea8bcf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/fnet3d_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,91 @@ +# FNet3D paper-baseline fit on membrane (Membrane channel of cell.zarr) — AICS iPSC confocal. +# The overlay's norm/aug/val_aug are keyed on Structure (the SEC61B/TOMM20 target +# channel). Membrane target_channel is Membrane, so we list-replace those three +# lists here to re-key them. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_spotlight_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: fnet3d_spotlight + experiment_id: membrane__ipsc_confocal__fnet3d_spotlight + +data: + init_args: + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `std`, unchanged from this family's baseline -- + # change the subtrahend, NEVER the divisor: it sets the scale of the only + # band where the Dice term has any gradient. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Membrane] + level: fov_statistics + subtrahend: otsu_threshold + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: [Phase3D, Membrane] + w_key: Membrane + spatial_size: [32, 64, 64] + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: [Phase3D, Membrane] + roi_size: [32, 64, 64] + +trainer: + logger: + init_args: + name: FNet3D_iPSC_MEMB_spotlight + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: "epoch={epoch}-step={step}-loss={loss/validate:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight/checkpoints + +launcher: + job_name: FNet3DSpotlight_MEMB + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/fnet3d_spotlight + # cell.zarr-backed preload (same plate as nucleus) puts MaxVMSize over + # the shared 256G cap; bump to match nucleus. + sbatch: + mem: "512G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..62a0794e6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix2d_unetvit_last + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_last__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_DENV_last + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..6c7244636 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix2d_unetvit_last + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_last__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_MOCK_last + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..ca1b0b74e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix2d_unetvit_last + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_last__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_ZIKV_last + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..ceaf7d9ee --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_last/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_last + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_last__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_IPSC_last + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_last/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index c2510d089..b19d67174 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index ad2693fbb..4c6890dfc 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index 9be860f1e..19c0ee550 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml index 2c3b59128..355cc430e 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml index 6e2a1e06e..f8b63eabe 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..788e3c0bb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix2d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..bbfdcb34e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix2d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..55ff5de61 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix2d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..fd4c684cf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_IPSC_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..10b9af7b5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segaux/ipsc_confocal/train.yml @@ -0,0 +1,72 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_iPSC_MEMB_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux/checkpoints +launcher: + job_name: pix2pix2d_unetvit_iPSC_MEMB_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segaux + sbatch: + constraint: a40|a6000|l40s|h100|h200 + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 1.2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..2b60a87ab --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix2d_unetvit_segauxself + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segauxself__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..e56558e95 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix2d_unetvit_segauxself + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segauxself__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..944638253 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix2d_unetvit_segauxself + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segauxself__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_A549_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..8a16e79b8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segauxself + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_MEMB_ON_IPSC_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..2f900e170 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,73 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf membrane/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segauxself + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Membrane + w_key: Membrane + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_iPSC_MEMB_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself/checkpoints +launcher: + job_name: pix2pix2d_unetvit_iPSC_MEMB_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_segauxself + sbatch: + constraint: a40|a6000|l40s|h100|h200 + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 1.2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..96a7baa46 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,80 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: membrane trained on ipsc_confocal, tested on A549 mantis denv. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/membrane.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix2d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_spotlight__a549_mantis_caax_denv + # A549 keys this organelle by gene; override the iPSC-side target + # from the target fragment so the resolver finds it on the A549 set. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_MEMB_ON_A549_DENV + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..ad203a985 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,80 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: membrane trained on ipsc_confocal, tested on A549 mantis mock. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/membrane.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix2d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_spotlight__a549_mantis_caax_mock + # A549 keys this organelle by gene; override the iPSC-side target + # from the target fragment so the resolver finds it on the A549 set. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_MEMB_ON_A549_MOCK + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..0c0da9982 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,80 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: membrane trained on ipsc_confocal, tested on A549 mantis zikv. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/membrane.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix2d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_spotlight__a549_mantis_caax_zikv + # A549 keys this organelle by gene; override the iPSC-side target + # from the target fragment so the resolver finds it on the A549 set. + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_MEMB_ON_A549_ZIKV + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..1b1cf0652 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,76 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: membrane trained on ipsc_confocal, tested on iPSC confocal. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/membrane.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/membrane/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_MEMB_ON_IPSC + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix2d_unetvit_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..85771dfee --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,140 @@ +# pix2pix2d_unetvit (UNetViT generator + multi-scale PatchGAN, run +# Z-preserving at Z=1) fit on membrane (Membrane channel) — AICS iPSC confocal, +# in-focus 2D track. Mirror of the 3D +# membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml leaf, +# flattened onto the offline 5-plane in-focus slab store (z_window_size=1 +# emits one in-focus window per plane). +# +# ⚠ Mirrors train_4gpu_modernized.yml, NOT the stale sibling train.yml. The +# published pix2pix3d rows came from the modernized "Run D" recipe — the +# checkpoints carry loss_type='nonsat', lr 2e-4/2e-4, r1_gamma=10, +# ema_kimg=10, lecam_gamma=0.3, lambda_l1=10 and 201 generator_ema.* tensors +# — while train.yml still composes the LSGAN baseline overlay. All of Run D is +# baked into model_overlays/pix2pix2d_unetvit_fit.yml, so unlike the 3D leaves +# this file repeats none of it. +# +# The 3D leaf resolves data_path/source_channel/target_channel from the +# manifest via benchmark.dataset_ref, which points at the NON-focus store. +# The 2D track reads the `_focus.zarr` slab instead, so the resolver is +# disabled here (dataset_ref: null) and the three data fields are declared +# inline — the resolver hook raises on any data.init_args field co-declared +# with a full dataset_ref. +# +# The train_set fragment supplies data.class_path (HCSDataModule) plus +# split_ratio / mmap_preload / scratch_dir. targets/membrane.yml supplies the +# NormalizeSampled(fov_statistics) normalization the pix2pix leaves use +# (mean/std on Phase3D, median/iqr on the target); only its RandWeightedCropd +# is list-replaced below, flattened [13,624,624] -> [1,624,624]. + +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_spotlight_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + gene: Membrane + target: membrane + target_id: membrane + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix2d_unetvit_spotlight + # Disable the manifest resolver: the 2D track reads the offline focus store, + # not the manifest-registered non-focus store. + dataset_ref: null + +data: + init_args: + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + # aics-hipsc in-focus slab store (Membrane channel) — resolver disabled above. + source_channel: Phase3D + target_channel: Membrane + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + # Source stays mean/std ON PURPOSE, twice over. (1) It is what makes this a + # matched comparison -- source preprocessing identical to the baseline. + # (2) Phase 1 ran preprocess with --channel_names Nuclei/Membrane only, so + # Phase3D carries NO otsu_threshold key, and NormalizeSampled indexes + # level_meta[self.subtrahend] with no fallback -> hard KeyError on the + # first batch. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `iqr` because that is what this family's baseline + # resolves to -- change the subtrahend, NEVER the divisor. deep_merge + # REPLACES lists, so restating this block wholesale replaces whatever was + # inherited; using the other family's divisor would silently change two + # things at once and break the "only the loss differs" premise. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Membrane] + level: fov_statistics + subtrahend: otsu_threshold + divisor: iqr + # Flatten the target fragment's [13, 624, 624] weighted crop to Z=1. + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: [Phase3D, Membrane] + w_key: Membrane + spatial_size: [1, 624, 624] + num_samples: 2 + +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_spotlight_iPSC_MEMB + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + # monitor loss/validate_ema, matching the 3D Run-D leaves: ema_kimg is set, + # so the EMA generator is the one the recipe selects on and the one predict + # reports. Monitoring the raw loss/validate would pin a different epoch. + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: "epoch={epoch}-step={step}-loss={loss/validate_ema:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight/checkpoints + +launcher: + job_name: pix2pix2d_unetvit_spotlight_iPSC_MEMB + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix2d_unetvit_spotlight + sbatch: + # Narrow OFF the hardware_4gpu h100|h200 default, the opposite of the 3D + # leaf. 3D needed h200 because the GAN OOMs 80 GB at Z=8; measured at Z=1 + # on an A40 (44.7 GiB) peak is 13.3 GiB/rank at batch_size 4, so the 48 GB + # cards have 3x headroom and reserving Hopper for this would be queue + # squatting. The profile documents this opt-out explicitly. + constraint: "a40|a6000|l40s|h100|h200" + # 128G: the in-focus slab store is a 5-plane slice of the full-Z 3D store + # (~1/4 the Z), so the profile's 512G mmap_preload headroom is inherited 3D + # scale. Set in the LEAF BODY because launcher_profiles compose after model + # overlays and would otherwise win. + mem: "128G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..45da38b99 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_denv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..a8bd171a5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_mock_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..f63911233 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_zikv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..c751321c3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..9d08d04b9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux/ipsc_confocal/train.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 3.1 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux + sbatch: + constraint: h200 +data: + init_args: + fg_mask_key: fg_mask diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..6de2fb077 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_segaux_sauna + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_denv_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..6e56af68b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_segaux_sauna + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_mock_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..d4e6e7bc5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_segaux_sauna + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_zikv_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..b897252ff --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_sauna + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/train.yml new file mode 100644 index 000000000..49f3a1c1e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna/ipsc_confocal/train.yml @@ -0,0 +1,60 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (fit) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice weighting=sauna (Dice sums weighted by |SAUNA h map| of the patch mask, iPSC voxel size) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_sauna + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + weighting: sauna + spacing: + - 0.29 + - 0.108 + - 0.108 + seg_aux_weight: 2.9 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_sauna + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_sauna + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna + sbatch: + constraint: h200 +data: + init_args: + fg_mask_key: fg_mask diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..66de33030 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_segaux_sauna_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna_seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_denv_segaux_sauna_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..22de912e2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_segaux_sauna_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna_seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_mock_segaux_sauna_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..9479a66ee --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_segaux_sauna_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna_seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_zikv_segaux_sauna_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..211ad9dc1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_sauna_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_segaux_sauna_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..d5432d75a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/ipsc_confocal/train.yml @@ -0,0 +1,61 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna_seed1` arm (fit) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: the segaux_sauna arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_sauna_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_sauna_seed1 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + weighting: sauna + spacing: + - 0.29 + - 0.108 + - 0.108 + seg_aux_weight: 2.9 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_sauna_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_sauna_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_sauna_seed1 + sbatch: + constraint: h200 +data: + init_args: + fg_mask_key: fg_mask +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..a30cafa10 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_denv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..2c8b16a99 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_mock_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..3f0bf2620 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_zikv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..d1268c8cc --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..e17c8f819 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,56 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 3.1 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_segaux_seed1 + sbatch: + constraint: h200 +data: + init_args: + fg_mask_key: fg_mask +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..8b4871bc4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,61 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: membrane (Membrane marker) trained on iPSC, predicting against a549_mantis_caax_denv test. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_spotlight__a549_mantis_caax_denv + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_MEMB_ON_A549_caax_denv + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..7ca0ed270 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,61 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: membrane (Membrane marker) trained on iPSC, predicting against a549_mantis_caax_mock test. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_spotlight__a549_mantis_caax_mock + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_MEMB_ON_A549_caax_mock + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..412b2e4c0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,61 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: membrane (Membrane marker) trained on iPSC, predicting against a549_mantis_caax_zikv test. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_spotlight__a549_mantis_caax_zikv + dataset_ref: + target: caax + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_MEMB_ON_A549_caax_zikv + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__hek_mantis_kras_a549xy.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__hek_mantis_kras_a549xy.yml new file mode 100644 index 000000000..07d85257e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__hek_mantis_kras_a549xy.yml @@ -0,0 +1,49 @@ +# pix2pix3d_unetvit_spotlight predict: membrane trained on ipsc_confocal, +# predicting against the HEK293T third-cell-type probe (KRAS, a549xy geometry). +# Auto-generated by tools/generate_hek_predict_configs.py from +# membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml — checkpoint and the sibling's +# data/model init_args (normalizations, predict hparams) and prediction-writer +# args lifted verbatim. +# Fit verified to train against a raw (non-deconvolved) GT channel. +# Evaluation-only: no HEK training. Path token is 'pix2pix3d_unetvit_spotlight' (config dir 'pix2pix3d_unetvit_spotlight'). +base: +- ../../../_internal/shared/model/predict_sets/hek_mantis_kras_a549xy.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: hek_mantis_kras_a549xy + model_name: pix2pix3d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_spotlight__hek_mantis_kras_a549xy + dataset_ref: + target: kras +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/hek__a549xy/prediction.zarr + z_reduction: center +launcher: + job_name: PIX2PIX3D_SPOTLIGHT_PRED_MEMBRANE_IPSCTR_HEK + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/hek__a549xy + sbatch: + constraint: a40|l40s|a6000|a100|h100|h200 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..b39dae209 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,59 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: membrane (Membrane marker) against ipsc_confocal test_cropped. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_MEMB + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..7608251da --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,94 @@ +# pix2pix3d_unetvit MODERNIZED fit on membrane (Membrane channel of cell.zarr) — AICS iPSC confocal, 4-GPU DDP. +# +# Finalized "Run D" recipe: modernized overlay (nonsat + R1 + G-EMA, equal LR) +# + lambda_l1=10 + LeCam gamma=0.3 + 40 epochs. Mirrors the completed nucleus +# modernized runs (same recipe, Membrane channel). Submit with NO overrides. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/membrane.yml + - ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_spotlight_fit_ddp_modernized.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_spotlight + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_spotlight_modernized + +data: + init_args: + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + normalizations: + # Source stays mean/std ON PURPOSE, twice over. (1) It is what makes this a + # matched comparison -- source preprocessing identical to the baseline. + # (2) Phase 1 ran preprocess with --channel_names Nuclei/Membrane only, so + # Phase3D carries NO otsu_threshold key, and NormalizeSampled indexes + # level_meta[self.subtrahend] with no fallback -> hard KeyError on the + # first batch. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `iqr` because that is what this family's baseline + # resolves to -- change the subtrahend, NEVER the divisor. deep_merge + # REPLACES lists, so restating this block wholesale replaces whatever was + # inherited; using the other family's divisor would silently change two + # things at once and break the "only the loss differs" premise. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Membrane] + level: fov_statistics + subtrahend: otsu_threshold + divisor: iqr + +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_spotlight_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: "epoch={epoch}-step={step}-loss={loss/validate_ema:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight/checkpoints + +launcher: + job_name: pix2pix3d_unetvit_spotlight_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_spotlight + # pix2pix3d GAN (UNetViT3D G + multiscale-patch D, large 3D crops) OOMs on + # 80 GB h100; needs h200 (141 GB). Narrow the hardware_4gpu h100|h200 default. + sbatch: + constraint: h200 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..fb71a7f5c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_v2 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_denv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..25b0507b8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_v2 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_mock_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..ee4f048c8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_v2 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_zikv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..579a5e0b9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..af7da9c65 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2/ipsc_confocal/train.yml @@ -0,0 +1,47 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2 + sbatch: + constraint: h200 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..d4740600d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_denv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_denv + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__a549_mantis_caax_denv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_denv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..8f5482964 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_mock.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_mock + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__a549_mantis_caax_mock + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_mock_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..a910d98d9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_caax_zikv.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: a549_mantis_caax_zikv + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__a549_mantis_caax_zikv + dataset_ref: + target: caax +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_ON_A549_caax_zikv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..f31ef16d7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_MEMB_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/membrane/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..49182342f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/membrane/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf membrane/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/membrane.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: membrane + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: membrane__ipsc_confocal__pix2pix3d_unetvit_v2_seed1 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_MEMB_4gpu_modernized_lambdaL1_10_lecam_40ep_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/membrane/pix2pix3d_unetvit_v2_seed1 + sbatch: + constraint: h200 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..60a01f091 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (mito, TOMM20): trained on iPSC, predicting a549_mantis_denv. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml + - ../../../_internal/shared/model/targets/mito_tomm20.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug__a549_mantis_tomm20_denv + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..312ee47e0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (mito, TOMM20): trained on iPSC, predicting a549_mantis_mock. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml + - ../../../_internal/shared/model/targets/mito_tomm20.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug__a549_mantis_tomm20_mock + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..af10152e9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (mito, TOMM20): trained on iPSC, predicting a549_mantis_zikv. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml + - ../../../_internal/shared/model/targets/mito_tomm20.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug__a549_mantis_tomm20_zikv + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..8baeecd91 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# FNet3DVSAug predict template (mito, TOMM20): trained on iPSC, predicting ipsc_confocal. +# ckpt_path is a placeholder; the Spotlight-v2 arms predict with --ckpt best. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/mito_tomm20.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/ipsc/prediction.zarr + +launcher: + job_name: FNet3DVSAug_PRED_TOMM20 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml new file mode 100644 index 000000000..988f0fc6a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml @@ -0,0 +1,56 @@ +# FNet3D "same-augmentations" recipe (Phase 15 Arm B) on mito (TOMM20 marker) — AICS iPSC confocal. +# Template baseline for the Spotlight-v2 Stage 2 #5 arms (generate_spotlight_v2_leaves.py emits +# fnet3d_vscyto3daug_{v2,v2_seed1,segaux,segaux_sauna,segaux_cldice} from it); never run as-is. +# Same recipe as nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml; the target channel is +# Structure, so the data overlay's Structure-keyed norm/aug/val lists apply unchanged. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/mito_tomm20.yml + - ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug + +trainer: + # Switch off the fnet3d_paper 32-true default: bf16-mixed halves the + # 384x384x32 activation footprint. MSE loss is immune to the bf16-SSIM + # cancellation issue. Must match fnet3d_bigpatch (Arm A) for a clean + # augmentation-only comparison. + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: "epoch={epoch}-step={step}-loss={loss/validate:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug/checkpoints + +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug + # 384x384x32 at bf16-mixed measured ~41GB GPU on the bigpatch arm, so an + # 80GB card (H100) fits with room; allow h100|h200 to schedule sooner. The + # vscyto3d aug stack (affine grid_sample + intensity) runs somewhat higher + # but still well under 80GB. TOMM20.zarr-backed preload pushes MaxVMSize past + # the shared 256G cap; mem 512G matches the fnet3d iPSC headroom. + sbatch: + constraint: "h100|h200" + mem: "512G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..320180033 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug_segaux + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_tomm20_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..289e46312 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug_segaux + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_tomm20_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..9f1984b25 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug_segaux + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_tomm20_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..596bea5f6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..2ff88d5f4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml @@ -0,0 +1,54 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.77 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..ef0c54108 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_tomm20_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..b98361d67 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_tomm20_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..272d99ef8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_tomm20_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..9e839fb03 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml new file mode 100644 index 000000000..b2b2ef3f0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml @@ -0,0 +1,57 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (fit) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice topology=cldice (0.5 Dice + 0.5 soft-clDice, 5 skeleton iterations) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20_segaux_cldice + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20_segaux_cldice + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_cldice + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + topology: cldice + cldice_alpha: 0.5 + cldice_iters: 5 + seg_aux_weight: 0.71 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..61c4c9a50 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_tomm20_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..96daf416c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_tomm20_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..7069c2ce9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_tomm20_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..d899baa0b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml new file mode 100644 index 000000000..37fc79374 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml @@ -0,0 +1,59 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (fit) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice weighting=sauna (Dice sums weighted by |SAUNA h map| of the patch mask, iPSC voxel size) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20_segaux_sauna + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20_segaux_sauna + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_sauna + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + weighting: sauna + spacing: + - 0.29 + - 0.108 + - 0.108 + seg_aux_weight: 0.66 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..21a98bd48 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_tomm20_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..fa4e8bfea --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_tomm20_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..9738513f9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_tomm20_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..43f0439e9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..0b689ab96 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_segaux_seed1 + sbatch: + constraint: h100|h200 + mem: 512G +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.77 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..ff37ceff6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug_v2 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_tomm20_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..00f7ef1c2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug_v2 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_tomm20_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..1d010fced --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug_v2 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_tomm20_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..3620d0d01 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..c2b6d0bfa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2 + sbatch: + constraint: h100|h200 + mem: 512G diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..00d0123d6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_denv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_denv + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_tomm20_denv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_denv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..da432929c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_mock.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_mock + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_tomm20_mock +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_mock_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..c4c88f2e8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_tomm20_zikv.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: a549_mantis_tomm20_zikv + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_tomm20_zikv +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_ON_A549_tomm20_zikv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..6a8236ee9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_TOMM20_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/mito/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..0a1e443a8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/mito/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf mito/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/mito_tomm20.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: mito + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: mito__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_TOMM20_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_TOMM20_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/mito/fnet3d_vscyto3daug_v2_seed1 + sbatch: + constraint: h100|h200 + mem: 512G +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..de7ac6952 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_2d_bgflat + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bgflat__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_DENV_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..fa9298d2a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_2d_bgflat + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bgflat__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_MOCK_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..f0b33f2b2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_2d_bgflat + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bgflat__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_ZIKV_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..e53527e77 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_bgflat + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bgflat__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_IPSC_bgflat + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bgflat/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/train.yml new file mode 100644 index 000000000..e2402bcb3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bgflat/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bgflat` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model target_bg_lowpass (BackgroundLowPass sigma_lp=None, sigma_feather=2.0, dilate_radius=4), a training-only target transform; validation and prediction see the raw target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: celldiff_2d_bgflat + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bgflat + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_NUCL_bgflat + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat/checkpoints +launcher: + job_name: CELLDiff2D_NUCL_bgflat + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bgflat + sbatch: + mem: 128G +model: + init_args: + target_bg_lowpass: + class_path: viscy_utils.losses.BackgroundLowPass + init_args: + sigma_lp: null + sigma_feather: 2.0 + dilate_radius: 4 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..79482816c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_2d_bglp + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bglp__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_DENV_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..b7fe47e28 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_2d_bglp + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bglp__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_MOCK_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..29405b9d0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_2d_bglp + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bglp__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_ZIKV_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..fb098d455 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_bglp + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bglp__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_IPSC_bglp + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_bglp/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/train.yml new file mode 100644 index 000000000..86a0d8011 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_bglp/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `bglp` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model target_bg_lowpass (BackgroundLowPass sigma_lp=2.0, sigma_feather=1.0, dilate_radius=2), a training-only target transform; validation and prediction see the raw target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: celldiff_2d_bglp + experiment_id: nucleus__ipsc_confocal__celldiff_2d_bglp + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_NUCL_bglp + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp/checkpoints +launcher: + job_name: CELLDiff2D_NUCL_bglp + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_bglp + sbatch: + mem: 128G +model: + init_args: + target_bg_lowpass: + class_path: viscy_utils.losses.BackgroundLowPass + init_args: + sigma_lp: 2.0 + sigma_feather: 1.0 + dilate_radius: 2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..fc1099329 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,52 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_2d_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_2d_ccond__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond/checkpoints/last.ckpt + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__denv/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_DENV_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..d34f92cd8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,52 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_2d_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_2d_ccond__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond/checkpoints/last.ckpt + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__mock/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_MOCK_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..54d17fcf2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,52 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_2d_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_2d_ccond__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond/checkpoints/last.ckpt + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__zikv/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_ZIKV_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..65228e5d5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,50 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_2d_ccond__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond/checkpoints/last.ckpt + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/ipsc/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_IPSC_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_ccond/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/train.yml new file mode 100644 index 000000000..8d2a9ff94 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_ccond/ipsc_confocal/train.yml @@ -0,0 +1,68 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model net_config.cond_channels 2, mask_mode cond, mask_corruption (MaskCorruption defaults). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: celldiff_2d_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_2d_ccond + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_NUCL_ccond + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond/checkpoints +launcher: + job_name: CELLDiff2D_NUCL_ccond + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_ccond + sbatch: + mem: 128G +model: + init_args: + net_config: + cond_channels: 2 + mask_mode: cond + mask_corruption: + class_path: dynacell.mask_conditioning.MaskCorruption diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..91451fb83 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,46 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_2d_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_2d_cjoint__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint/checkpoints/last.ckpt + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_DENV_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..2575767f4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,46 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_2d_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_2d_cjoint__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint/checkpoints/last.ckpt + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_MOCK_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..7cc4083c2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,46 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_2d_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_2d_cjoint__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint/checkpoints/last.ckpt + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_ZIKV_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..022d956f5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_2d_cjoint__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint/checkpoints/last.ckpt + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_IPSC_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_cjoint/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/train.yml new file mode 100644 index 000000000..02bd5c0fa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_cjoint/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model net_config.in_channels 2, mask_mode joint, mask_dice_weight, mask_velocity_weight 1.0, seg_aux_t0 0.7. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: celldiff_2d_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_2d_cjoint + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_NUCL_cjoint + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint/checkpoints +launcher: + job_name: CELLDiff2D_NUCL_cjoint + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_cjoint + sbatch: + mem: 128G +model: + init_args: + net_config: + in_channels: 2 + mask_mode: joint + mask_dice_weight: 2.5 + mask_velocity_weight: 1.0 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index c4af69cde..da5a018a2 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index f11dacdfd..96d516b63 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index 78ae8b06f..210a42a03 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml index b26a0fb42..6f8629603 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/train.yml index f7339c789..af26b2cd9 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..efb3c97fe --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_2d_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..1c661dc25 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_2d_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..32b5cfaf2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_2d_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..eb2da0225 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_IPSC_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..e34aaf146 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segaux/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: celldiff_2d_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_NUCL_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux/checkpoints +launcher: + job_name: CELLDiff2D_NUCL_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segaux + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.5 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..bbb37996e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_2d_segauxself + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segauxself__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..51378cd67 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_2d_segauxself + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segauxself__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..b406ab5c5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_2d_segauxself + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segauxself__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_A549_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..9b5c2c043 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,41 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_2d_segauxself + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff2D_PRED_NUCL_ON_IPSC_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_2d_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..181f7ef74 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_2d_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,70 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf nucleus/celldiff_2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: celldiff_2d_segauxself + experiment_id: nucleus__ipsc_confocal__celldiff_2d_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: CELLDiff2D_iPSC_NUCL_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself/checkpoints +launcher: + job_name: CELLDiff2D_NUCL_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_2d_segauxself + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 2.5 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..2df3b161f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,57 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_ccond__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__denv/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_DENV_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..d73313fdb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,57 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_ccond__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__mock/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_MOCK_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..d32ff5bbe --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,57 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_ccond__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__zikv/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_ZIKV_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__ipsc_confocal__iterative.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__ipsc_confocal__iterative.yml new file mode 100644 index 000000000..ca7feeb78 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/predict__ipsc_confocal__iterative.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__ipsc_confocal__iterative.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_ccond__ipsc_confocal__iterative +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + cond_channels: 2 + mask_mode: cond + cond_mask_source: + class_path: dynacell.mask_conditioning.CondMaskSource + init_args: + data_path: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/ipsc/prediction.zarr + channel: Nuclei_prediction + threshold: otsu +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 40 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ITER_ccond + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_ccond_iterative/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/train.yml new file mode 100644 index 000000000..0bc6cdcea --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_ccond/ipsc_confocal/train.yml @@ -0,0 +1,47 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `ccond` arm (fit) of the baseline leaf nucleus/celldiff/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model net_config.cond_channels 2, mask_mode cond, mask_corruption (MaskCorruption defaults). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_h200_single.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: celldiff_ccond + experiment_id: nucleus__ipsc_confocal__celldiff_ccond +trainer: + logger: + init_args: + name: CELLDiff_iPSC_NUCL_ccond + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond/checkpoints +launcher: + job_name: CELLDiff_NUCL_ccond + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_ccond +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + net_config: + cond_channels: 2 + mask_mode: cond + mask_corruption: + class_path: dynacell.mask_conditioning.MaskCorruption diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..f66762898 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,51 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_cjoint__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_DENV_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..47a8c16c8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,51 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_cjoint__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_MOCK_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..75c3f258a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,51 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_cjoint__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_ZIKV_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__ipsc_confocal__iterative.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__ipsc_confocal__iterative.yml new file mode 100644 index 000000000..063b9d502 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/predict__ipsc_confocal__iterative.yml @@ -0,0 +1,49 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__ipsc_confocal__iterative.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_cjoint__ipsc_confocal__iterative +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 + net_config: + in_channels: 2 + mask_mode: joint +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 40 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ITER_cjoint + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_cjoint_iterative/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/train.yml new file mode 100644 index 000000000..7b918820c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_cjoint/ipsc_confocal/train.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `cjoint` arm (fit) of the baseline leaf nucleus/celldiff/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model net_config.in_channels 2, mask_mode joint, mask_dice_weight, mask_velocity_weight 1.0, seg_aux_t0 0.7. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_h200_single.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: celldiff_cjoint + experiment_id: nucleus__ipsc_confocal__celldiff_cjoint +trainer: + logger: + init_args: + name: CELLDiff_iPSC_NUCL_cjoint + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint/checkpoints +launcher: + job_name: CELLDiff_NUCL_cjoint + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_cjoint +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + net_config: + in_channels: 2 + mask_mode: joint + mask_dice_weight: 1.4 + mask_velocity_weight: 1.0 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..52d8515a1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: celldiff_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__denv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..3b77975d5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: celldiff_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__mock/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..86d731d00 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: celldiff_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 48 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__ipsc_confocal__iterative.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__ipsc_confocal__iterative.yml new file mode 100644 index 000000000..8fa508860 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/predict__ipsc_confocal__iterative.yml @@ -0,0 +1,46 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/celldiff/ipsc_confocal/predict__ipsc_confocal__iterative.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/celldiff_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_celldiff.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: celldiff_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_segaux__ipsc_confocal__iterative +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux/checkpoints/last.ckpt + predict_method: iterative + predict_overlap: + - 4 + - 256 + - 256 +data: + init_args: + normalizations: + - class_path: viscy_transforms.MinMaxSampled + init_args: + keys: + - Phase3D + level: timepoint_statistics + augmentations: [] + z_window_size: 40 +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/ipsc/prediction.zarr +launcher: + job_name: CELLDiff_PRED_NUCL_ITER_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/celldiff_segaux_iterative/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..97bba70ef --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/celldiff_segaux/ipsc_confocal/train.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/celldiff/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus_celldiff.yml +- ../../../_internal/shared/model/data_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/model_overlays/celldiff_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_h200_single.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: celldiff_segaux + experiment_id: nucleus__ipsc_confocal__celldiff_segaux +trainer: + logger: + init_args: + name: CELLDiff_iPSC_NUCL_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + every_n_epochs: 1 + save_top_k: -1 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux/checkpoints +launcher: + job_name: CELLDiff_NUCL_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/celldiff_segaux +data: + init_args: + fg_mask_key: fg_mask +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 1.4 + seg_aux_t0: 0.7 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index 77950cc38..968b3bb4f 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index 5b62b90a3..6d502d3bf 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index 9c6e73875..d41fcc64b 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml index f5d71d2e1..a6051783b 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml index f19235ade..a45c33682 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..eb25b2d07 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..fb84af6a0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..81edbbc5c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..7251c5ab8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_IPSC_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..7f502d274 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segaux/ipsc_confocal/train.yml @@ -0,0 +1,68 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Nucleus_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Nucleus_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segaux + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.73 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..e443c6751 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_A549_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..06c2f8257 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_A549_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..7a41ce3e7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_A549_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..5018e06c4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE2D_Scratch_PRED_NUCL_ON_IPSC_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..937e226fb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto2d_scratch_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,69 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf nucleus/fcmae_vscyto2d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto2d_scratch_segauxself + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto2d_scratch_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto2D_Scratch_iPSC_Nucleus_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself/checkpoints +launcher: + job_name: FCMAE_VSCyto2D_Scratch_Nucleus_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto2d_scratch_segauxself + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 0.73 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..d4760cd2f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..1b5e19adf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..3bf3949ed --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..8f63042de --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..c828fc7e0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux/ipsc_confocal/train.yml @@ -0,0 +1,63 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Nucleus_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Nucleus_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.82 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..9de354032 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_DENV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..cbf8b5dad --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_MOCK_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..efe72f453 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_ZIKV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..20f77183e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..10db0d550 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,64 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segaux_seed1 +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Nucleus_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Nucleus_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segaux_seed1 +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.82 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..8b7c61640 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto3d_scratch_segcons + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_DENV_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..f2934660d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto3d_scratch_segcons + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_MOCK_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..616b620c5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto3d_scratch_segcons + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_ZIKV_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..8ca841ec8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segcons + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/train.yml new file mode 100644 index 000000000..c00b1ee30 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons/ipsc_confocal/train.yml @@ -0,0 +1,71 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (fit) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segcons_ctrl fork + model seg_consistency (SegConsistencyLoss, Cellpose-SAM cpsam, slab halfwidth 1, 240-px crop (one cellpose tile), per-tile activation checkpointing) + seg_consistency_weight (gradient-norm calibrated at the fork checkpoint). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segcons + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Nucleus_segcons + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons/checkpoints + max_epochs: 20 +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Nucleus_segcons + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/latest-epoch=199-step=62400.ckpt + lr: 4.0e-05 + warmup_steps: 312 + seg_consistency: + class_path: viscy_utils.losses.SegConsistencyLoss + init_args: + segmenter: + class_path: dynacell.cellpose_dense.CellposeDense + init_args: + model_name: cpsam + checkpoint_tiles: 1 + slab_halfwidth: 1 + crop_size: 240 + seg_consistency_weight: 0.032 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..3d576b846 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto3d_scratch_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons_ctrl__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_DENV_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..4123c2041 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto3d_scratch_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons_ctrl__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_MOCK_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..cbcd8072a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto3d_scratch_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons_ctrl__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_ZIKV_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..ed2966df8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons_ctrl__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/train.yml new file mode 100644 index 000000000..fc7159dc5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/ipsc_confocal/train.yml @@ -0,0 +1,60 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (fit) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: fork: model ckpt_path (the converged baseline checkpoint, weights only) + the fine-tune budget and LR of FORK_SCHEDULES; no other change (the no-term control of segcons). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_segcons_ctrl +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Nucleus_segcons_ctrl + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl/checkpoints + max_epochs: 20 +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Nucleus_segcons_ctrl + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_segcons_ctrl +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/latest-epoch=199-step=62400.ckpt + lr: 4.0e-05 + warmup_steps: 312 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..69e58a3f0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_DENV_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..eb748c268 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_MOCK_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..d1626ef05 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_ZIKV_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..6732fad95 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..c5fd0c7c6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2/ipsc_confocal/train.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2 +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Nucleus_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Nucleus_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..e93598628 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_DENV_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..9106b8a0a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_MOCK_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..7cf9b34bf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_ON_A549_ZIKV_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..b10606147 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FCMAE_VSCyto3D_Scratch_PRED_NUCL_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..84607b03d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fcmae_vscyto3d_scratch_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,56 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf nucleus/fcmae_vscyto3d_scratch/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d (checkpoint-mtime pairs in the generator docstring). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/model_overlays/fcmae_vscyto3d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fcmae_vscyto3d_scratch_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fcmae_vscyto3d_scratch_v2_seed1 +data: + init_args: + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 20 + - 600 + - 600 + num_samples: 4 +trainer: + logger: + init_args: + name: FCMAE_VSCyto3D_Scratch_iPSC_Nucleus_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 5 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1/checkpoints +launcher: + job_name: FCMAE_VSCyto3D_Scratch_Nucleus_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fcmae_vscyto3d_scratch_v2_seed1 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index 903f2cc33..812881673 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index f15be148f..508d3ef4b 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index 45e4bcafc..1c70e792c 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml index 075c6fe41..6af107753 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/train.yml index 1fa0fd463..3565dc3f9 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf nucleus/fnet2d/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf nucleus/fnet2d/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..083b76c3f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet2d_segaux + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..af51ed5fd --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet2d_segaux + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..2d8e44314 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet2d_segaux + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..86d02ef53 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_segaux + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..b2e5c39f9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux/ipsc_confocal/train.yml @@ -0,0 +1,93 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/fnet2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet2d_segaux + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 1 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet2D_iPSC_NUCL_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux/checkpoints +launcher: + job_name: FNet2D_NUCL_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.9 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..91fcacb46 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet2d_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_DENV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..c09adfc83 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet2d_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_MOCK_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..19db297bc --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet2d_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_ZIKV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..db0a070be --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..3a8728cb8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,94 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf nucleus/fnet2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet2d_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet2d_segaux_seed1 + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 1 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet2D_iPSC_NUCL_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1/checkpoints +launcher: + job_name: FNet2D_NUCL_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segaux_seed1 + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.9 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..e7a2f766a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet2d_segauxself + experiment_id: nucleus__ipsc_confocal__fnet2d_segauxself__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..232d97d4b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet2d_segauxself + experiment_id: nucleus__ipsc_confocal__fnet2d_segauxself__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..08a3bed15 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet2d_segauxself + experiment_id: nucleus__ipsc_confocal__fnet2d_segauxself__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..f54a43b61 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/fnet2d/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_segauxself + experiment_id: nucleus__ipsc_confocal__fnet2d_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet2D_PRED_NUCL_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..2efa9ef27 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,94 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf nucleus/fnet2d/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet2d_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet2d_segauxself + experiment_id: nucleus__ipsc_confocal__fnet2d_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 1 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet2D_iPSC_NUCL_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself/checkpoints +launcher: + job_name: FNet2D_NUCL_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_segauxself + sbatch: + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 2.9 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..642906f84 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,65 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: nucleus (NUCL) trained on ipsc_confocal, tested on A549 mantis denv. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet2d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet2d_spotlight__a549_mantis_h2b_denv + # Override the iPSC-side `nucleus` target with a549's gene-keyed `h2b`. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_NUCL_DENV + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..660b2e698 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,65 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: nucleus (NUCL) trained on ipsc_confocal, tested on A549 mantis mock. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet2d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet2d_spotlight__a549_mantis_h2b_mock + # Override the iPSC-side `nucleus` target with a549's gene-keyed `h2b`. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_NUCL_MOCK + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..af80e62fa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,65 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: nucleus (NUCL) trained on ipsc_confocal, tested on A549 mantis zikv. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet2d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet2d_spotlight__a549_mantis_h2b_zikv + # Override the iPSC-side `nucleus` target with a549's gene-keyed `h2b`. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_NUCL_ZIKV + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..71c350bb9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,62 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet2d predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet2D predict: nucleus (NUCL) trained on ipsc_confocal, tested on iPSC confocal. +# In-focus 2D track (Phase F). The 2D checkpoint predicts over the FULL-Z 3D test +# store with z_window_size=1 (fnet2d_predict overlay), emitting one window per +# z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. Source normalization (Phase3D fov_statistics mean/std) reproduces the +# fnet2d fit overlay exactly; a mismatch here would silently degrade predictions. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet2d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet2d_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/ipsc/prediction.zarr + +launcher: + job_name: FNet2DSpotlight_PRED_NUCL + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet2d_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..a81626424 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet2d_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,113 @@ +# FNet2D (FNet3D run Z-preserving at Z=1) fit on nucleus (Nuclei channel) — +# AICS iPSC confocal, in-focus 2D track. Mirror of the 3D +# nucleus/fnet3d_paper/ipsc_confocal fit leaf, flattened onto the offline +# 5-plane in-focus slab store cell_focus.zarr (z_window_size=1 emits one +# in-focus window per plane). +# +# The 3D ipsc leaf resolves data_path/source_channel/target_channel from the +# manifest via benchmark.dataset_ref, which points at the NON-focus +# cell.zarr. The 2D track reads cell_focus.zarr instead, so the resolver is +# disabled here (dataset_ref: null) and the three data fields are declared +# inline — the resolver hook raises on any data.init_args field co-declared +# with a full dataset_ref. source_channel/target_channel reproduce the +# resolver's manifest output (Phase3D / Nuclei). +# +# The fnet2d data overlay keys norm/aug/val_aug on Structure (the ER/Mito +# target), so we list-replace those three lists here to re-key to Nuclei, +# flattening the crops [32,64,64] -> [1,64,64]. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/data_overlays/fnet2d_fit.yml + - ../../../_internal/shared/model/model_overlays/fnet2d_spotlight_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet2d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet2d_spotlight + # Disable the manifest resolver: the 2D track reads the offline focus + # store, not the manifest-registered cell.zarr. dataset_ref: null makes + # the compose hook a no-op so data fields can be declared inline. + dataset_ref: null + +data: + init_args: + # iPSC in-focus slab store + channels — resolver disabled above. + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `std`, unchanged from this family's baseline -- + # change the subtrahend, NEVER the divisor: it sets the scale of the only + # band where the Dice term has any gradient. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Nuclei] + level: fov_statistics + subtrahend: otsu_threshold + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: [Phase3D, Nuclei] + w_key: Nuclei + spatial_size: [1, 64, 64] + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: [Phase3D, Nuclei] + roi_size: [1, 64, 64] + +trainer: + logger: + init_args: + name: FNet2D_iPSC_NUCL_spotlight + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: "epoch={epoch}-step={step}-loss={loss/validate:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight/checkpoints + +launcher: + job_name: FNet2DSpotlight_NUCL + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet2d_spotlight + # 128G: the in-focus slab store is a 5-plane slice of the full-Z 3D store + # (~1/4 the Z), so the 512G headroom the 3D leaf needed for cell.zarr + # mmap_preload is wasteful and delays scheduling. + sbatch: + mem: "128G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..9fe536606 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_paper_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_DENV_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..72cf2df2e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_paper_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_MOCK_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..e740e8b76 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_paper_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_ZIKV_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..5d71c07a1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_paper_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..873fbb1b6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_seed1/ipsc_confocal/train.yml @@ -0,0 +1,82 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: seed_everything: 1. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_paper_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_seed1 +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 64 + - 64 +trainer: + logger: + init_args: + name: FNet3D_iPSC_NUCL_paper_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1/checkpoints +launcher: + job_name: FNet3DPaper_NUCL_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_seed1 + sbatch: + mem: 512G +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..329f656cb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_paper_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..e52b8b897 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_paper_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..8f6dfd6d1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_paper_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..56033d408 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_paper_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..496851acb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux/ipsc_confocal/train.yml @@ -0,0 +1,89 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_paper_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet3D_iPSC_NUCL_paper_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux/checkpoints +launcher: + job_name: FNet3DPaper_NUCL_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux + sbatch: + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 1.9 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..2ec64105d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_paper_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_doublew__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_DENV_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..79b539898 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_paper_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_doublew__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_MOCK_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..1ba7338f7 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_paper_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_doublew__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_ZIKV_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..1732fc97b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_paper_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_doublew__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_doublew/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/train.yml new file mode 100644 index 000000000..8c6d4f85f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_doublew/ipsc_confocal/train.yml @@ -0,0 +1,89 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (fit) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe with seg_aux_weight x2 (loss-weight sweep). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_paper_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_doublew +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet3D_iPSC_NUCL_paper_segaux_doublew + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew/checkpoints +launcher: + job_name: FNet3DPaper_NUCL_segaux_doublew + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_doublew + sbatch: + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 3.8 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..aadf514dd --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_paper_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_halfw__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_DENV_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..e747a3ea3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_paper_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_halfw__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_MOCK_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..5ddd1ce43 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_paper_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_halfw__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_ZIKV_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..ba85e093e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_paper_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_halfw__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_halfw/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/train.yml new file mode 100644 index 000000000..100e17da2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_halfw/ipsc_confocal/train.yml @@ -0,0 +1,89 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (fit) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe with seg_aux_weight x0.5 (loss-weight sweep). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_paper_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_halfw +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet3D_iPSC_NUCL_paper_segaux_halfw + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw/checkpoints +launcher: + job_name: FNet3DPaper_NUCL_segaux_halfw + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_halfw + sbatch: + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 0.95 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..0c17385c9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_paper_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_DENV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..3c3e63739 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_paper_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_MOCK_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..34015a8c9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_paper_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_ON_A549_ZIKV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..2e9c7de77 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_paper_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DPaper_PRED_NUCL_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_paper_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..6161d48e1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_paper_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,90 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf nucleus/fnet3d_paper/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_paper_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_paper_segaux_seed1 +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 64 + - 64 + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 64 + - 64 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: FNet3D_iPSC_NUCL_paper_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1/checkpoints +launcher: + job_name: FNet3DPaper_NUCL_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_paper_segaux_seed1 + sbatch: + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 1.9 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..d49de639c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,58 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: nucleus trained on iPSC, predicting against a549-mantis-h2b-denv test. +# A549 manifest keys nucleus by gene (`h2b`); override the iPSC-side `nucleus` +# target_id from targets/nucleus.yml so the resolver finds the h2b target on +# a549-mantis-h2b-denv. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet3d_spotlight__a549_mantis_h2b_denv + # Override the iPSC-side `nucleus` target to a549's gene-keyed `h2b`. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_NUCL_ON_A549_DENV + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..883ece188 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,58 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: nucleus trained on iPSC, predicting against a549-mantis-h2b-mock test. +# A549 manifest keys nucleus by gene (`h2b`); override the iPSC-side `nucleus` +# target_id from targets/nucleus.yml so the resolver finds the h2b target on +# a549-mantis-h2b-mock. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet3d_spotlight__a549_mantis_h2b_mock + # Override the iPSC-side `nucleus` target to a549's gene-keyed `h2b`. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_NUCL_ON_A549_MOCK + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..a778d2fc9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,58 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: nucleus trained on iPSC, predicting against a549-mantis-h2b-zikv test. +# A549 manifest keys nucleus by gene (`h2b`); override the iPSC-side `nucleus` +# target_id from targets/nucleus.yml so the resolver finds the h2b target on +# a549-mantis-h2b-zikv. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet3d_spotlight__a549_mantis_h2b_zikv + # Override the iPSC-side `nucleus` target to a549's gene-keyed `h2b`. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_NUCL_ON_A549_ZIKV + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..85c88c667 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,52 @@ +# SPOTLIGHT ARM. Mechanical copy of the fnet3d_paper predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# FNet3D paper-baseline predict: nucleus against ipsc_confocal test_cropped. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet3d_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight/checkpoints/last.ckpt + +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/ipsc/prediction.zarr + +launcher: + job_name: FNet3DSpotlight_PRED_NUCL + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..5ddd88c20 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,91 @@ +# FNet3D paper-baseline fit on nucleus (Nuclei channel of cell.zarr) — AICS iPSC confocal. +# The overlay's norm/aug/val_aug are keyed on Structure (the SEC61B/TOMM20 target +# channel). Nucleus target_channel is Nuclei, so we list-replace those three lists +# here to re-key them. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/data_overlays/fnet3d_paper_fit.yml + - ../../../_internal/shared/model/model_overlays/fnet3d_spotlight_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_spotlight + experiment_id: nucleus__ipsc_confocal__fnet3d_spotlight + +data: + init_args: + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `std`, unchanged from this family's baseline -- + # change the subtrahend, NEVER the divisor: it sets the scale of the only + # band where the Dice term has any gradient. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Nuclei] + level: fov_statistics + subtrahend: otsu_threshold + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: [Phase3D, Nuclei] + w_key: Nuclei + spatial_size: [32, 64, 64] + num_samples: 8 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: [Phase3D, Nuclei] + roi_size: [32, 64, 64] + +trainer: + logger: + init_args: + name: FNet3D_iPSC_NUCL_spotlight + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: "epoch={epoch}-step={step}-loss={loss/validate:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight/checkpoints + +launcher: + job_name: FNet3DSpotlight_NUCL + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_spotlight + # cell.zarr-backed preload pushes MaxVMSize past the shared 256G cap + # (observed 264G on the first launch; worker OOM-killed in validation). + sbatch: + mem: "512G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..844757ca4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..568644ddd --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..c46200a97 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..1f0c8add6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..35cae5c6d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux/ipsc_confocal/train.yml @@ -0,0 +1,91 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 + fg_mask_key: fg_mask +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 4.5 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..dbc6e37f3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..8100bda67 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..749fa65f1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..2318f7a3c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segaux_cldice + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml new file mode 100644 index 000000000..fc2aedac9 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_cldice/ipsc_confocal/train.yml @@ -0,0 +1,94 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_cldice` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice topology=cldice (0.5 Dice + 0.5 soft-clDice, 5 skeleton iterations) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_cldice + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_cldice +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 + fg_mask_key: fg_mask +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segaux_cldice + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segaux_cldice + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_cldice + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + topology: cldice + cldice_alpha: 0.5 + cldice_iters: 5 + seg_aux_weight: 0.88 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..c15773cbf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_doublew__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..adc004c1e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_doublew__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..9b3e6e1db --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_doublew__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..33d1dfd9f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_doublew__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segaux_doublew + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/train.yml new file mode 100644 index 000000000..daa759d21 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_doublew/ipsc_confocal/train.yml @@ -0,0 +1,91 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_doublew` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe with seg_aux_weight x2 (loss-weight sweep). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_doublew + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_doublew +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 + fg_mask_key: fg_mask +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segaux_doublew + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segaux_doublew + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_doublew + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 9.0 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..7b320da10 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_halfw__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..a9a856b25 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_halfw__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..b0f4f7b6a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_halfw__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..31b19343d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_halfw__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segaux_halfw + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/train.yml new file mode 100644 index 000000000..386727fa4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_halfw/ipsc_confocal/train.yml @@ -0,0 +1,91 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_halfw` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe with seg_aux_weight x0.5 (loss-weight sweep). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_halfw + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_halfw +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 + fg_mask_key: fg_mask +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segaux_halfw + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segaux_halfw + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_halfw + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.25 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..dbf9c19e4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..644d32261 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..5250c0d76 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..1da25f4a5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segaux_sauna + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml new file mode 100644 index 000000000..e45f74417 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_sauna/ipsc_confocal/train.yml @@ -0,0 +1,96 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_sauna` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + SegAuxDice weighting=sauna (Dice sums weighted by |SAUNA h map| of the patch mask, iPSC voxel size) at its own calibrated seg_aux_weight. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_sauna + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_sauna +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 + fg_mask_key: fg_mask +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segaux_sauna + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segaux_sauna + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_sauna + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + weighting: sauna + spacing: + - 0.29 + - 0.108 + - 0.108 + seg_aux_weight: 5.3 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..3ae34c27e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..c12bb2f6c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..da687656b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..787abbabf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..100cff64d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,92 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segaux_seed1 +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 + fg_mask_key: fg_mask +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segaux_seed1 + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 4.5 +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..d399ca4d5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segcons + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..086b84190 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segcons + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..4e0b0365e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segcons + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..7bf84abaa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segcons + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/train.yml new file mode 100644 index 000000000..d043e890b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons/ipsc_confocal/train.yml @@ -0,0 +1,99 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segcons_ctrl fork + model seg_consistency (SegConsistencyLoss, Cellpose-SAM cpsam, slab halfwidth 1, 240-px crop (one cellpose tile), per-tile activation checkpointing) + seg_consistency_weight (gradient-norm calibrated at the fork checkpoint). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segcons + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segcons + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons/checkpoints + max_steps: 20000 +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segcons + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/latest-epoch=76-step=200000.ckpt + lr: 0.0001 + seg_consistency: + class_path: viscy_utils.losses.SegConsistencyLoss + init_args: + segmenter: + class_path: dynacell.cellpose_dense.CellposeDense + init_args: + model_name: cpsam + checkpoint_tiles: 1 + slab_halfwidth: 1 + crop_size: 240 + seg_consistency_weight: 0.37 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..4b5777af5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons_ctrl__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..0393320d5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons_ctrl__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..077c033d2 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons_ctrl__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..c7013cdf1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons_ctrl__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/train.yml new file mode 100644 index 000000000..98ef16741 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_segcons_ctrl/ipsc_confocal/train.yml @@ -0,0 +1,88 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: fork: model ckpt_path (the converged baseline checkpoint, weights only) + the fine-tune budget and LR of FORK_SCHEDULES; no other change (the no-term control of segcons). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_segcons_ctrl +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_segcons_ctrl + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl/checkpoints + max_steps: 20000 +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_segcons_ctrl + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_segcons_ctrl + sbatch: + constraint: h100|h200 + mem: 512G +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/latest-epoch=76-step=200000.ckpt + lr: 0.0001 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..c27e5f0d8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_v2 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..48e12ebc4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_v2 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..3ec6361bb --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_v2 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..2376b047d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..705867cb5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2/ipsc_confocal/train.yml @@ -0,0 +1,83 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2 +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2 + sbatch: + constraint: h100|h200 + mem: 512G diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_denv.yml new file mode 100644 index 000000000..1c3058461 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_denv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_DENV_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_mock.yml new file mode 100644 index 000000000..e78f5131e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_mock.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_MOCK_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml new file mode 100644 index 000000000..830310ace --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml @@ -0,0 +1,44 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__a549_mantis_h2b_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_ON_A549_ZIKV_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..ad68f3083 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,42 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc/prediction.zarr +launcher: + job_name: FNet3DVSAug_PRED_NUCL_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..d9faedd5a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/fnet3d_vscyto3daug_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,84 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf nucleus/fnet3d_vscyto3daug/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/fnet3d_vscyto3daug_fit.yml +- ../../../_internal/shared/model/model_overlays/fnet3d_paper_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_gpu_any_long.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: fnet3d_vscyto3daug_v2_seed1 + experiment_id: nucleus__ipsc_confocal__fnet3d_vscyto3daug_v2_seed1 +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Nuclei + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 32 + - 600 + - 600 + num_samples: 4 + val_augmentations: + - class_path: viscy_transforms.CenterSpatialCropd + init_args: + keys: + - Phase3D + - Nuclei + roi_size: + - 32 + - 384 + - 384 +trainer: + precision: bf16-mixed + logger: + init_args: + name: FNet3D_VSAug_iPSC_NUCL_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate + filename: epoch={epoch}-step={step}-loss={loss/validate:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1/checkpoints +launcher: + job_name: FNet3DVSAug_iPSC_NUCL_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/fnet3d_vscyto3daug_v2_seed1 + sbatch: + constraint: h100|h200 + mem: 512G +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..593bbedae --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix2d_unetvit_last + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_last__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_DENV_last + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..080a8a1b4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix2d_unetvit_last + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_last__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_MOCK_last + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..bee75594b --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix2d_unetvit_last + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_last__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_ZIKV_last + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..f68eccc8a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_last/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `last` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_last + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_last__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_IPSC_last + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_last/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml index 395801337..59f10abdc 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml index b377647bf..7265727bb 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml index c16553002..8ad0b89c0 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml index e4352ffd7..23fed38c5 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. # Inference is identical to the baseline's; only the checkpoint, store and names differ. # ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. # Everything else, and the rationale for it, is the baseline leaf's. diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml index 7fb9824d3..d8fd8f8b1 100644 --- a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml @@ -1,6 +1,6 @@ -# Second draw (seed 1) of a 2D baseline, read by the `*__2d_focus2d_seed1` eval -# buckets for the 2D track's seed-vs-seed check. -# `seed1` replicate (fit) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `seed1` arm (fit) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/train.yml. # Recipe delta vs that leaf: seed_everything: 1. # Everything else, and the rationale for it, is the baseline leaf's. base: diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..4cfed3a22 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix2d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_DENV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..2a510227d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix2d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_MOCK_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..bd7b7084a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix2d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_ZIKV_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..7c93afa0c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_IPSC_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..a12f905b0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segaux/ipsc_confocal/train.yml @@ -0,0 +1,72 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segaux + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_iPSC_NUCL_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux/checkpoints +launcher: + job_name: pix2pix2d_unetvit_iPSC_NUCL_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segaux + sbatch: + constraint: a40|a6000|l40s|h100|h200 + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 16.0 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..5fd79036f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix2d_unetvit_segauxself + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segauxself__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_DENV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..e36e73588 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix2d_unetvit_segauxself + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segauxself__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_MOCK_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..ddb269370 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix2d_unetvit_segauxself + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segauxself__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_ZIKV_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..64605b0b3 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segauxself + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segauxself__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_IPSC_segauxself + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segauxself/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/train.yml new file mode 100644 index 000000000..272dd6cf1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segauxself/ipsc_confocal/train.yml @@ -0,0 +1,73 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segauxself` arm (fit) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the target through the same sigmoid, so the term is zero at pred == target. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segauxself + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segauxself + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 + fg_mask_key: fg_mask +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_iPSC_NUCL_segauxself + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself/checkpoints +launcher: + job_name: pix2pix2d_unetvit_iPSC_NUCL_segauxself + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segauxself + sbatch: + constraint: a40|a6000|l40s|h100|h200 + mem: 128G +model: + init_args: + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + label: target + seg_aux_weight: 16.0 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..963531e56 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix2d_unetvit_segcons + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_DENV_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..da1d53470 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix2d_unetvit_segcons + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_MOCK_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..17b7d7c16 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix2d_unetvit_segcons + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_ZIKV_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..8f4200afe --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segcons + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_IPSC_segcons + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/train.yml new file mode 100644 index 000000000..9b84b4839 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons/ipsc_confocal/train.yml @@ -0,0 +1,83 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons` arm (fit) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: the segcons_ctrl fork + model seg_consistency (SegConsistencyLoss, Cellpose-SAM cpsam, slab halfwidth 1, 240-px crop (one cellpose tile), per-tile activation checkpointing) + seg_consistency_weight (gradient-norm calibrated at the fork checkpoint). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segcons + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_iPSC_NUCL_segcons + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons/checkpoints + max_epochs: 4 +launcher: + job_name: pix2pix2d_unetvit_iPSC_NUCL_segcons + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons + sbatch: + constraint: a40|a6000|l40s|h100|h200 + mem: 128G +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/latest-epoch=39-step=20000.ckpt + lr_g: 2.0e-05 + lr_d: 2.0e-05 + warmup_steps: 50 + ema_kimg: 2.0 + seg_consistency: + class_path: viscy_utils.losses.SegConsistencyLoss + init_args: + segmenter: + class_path: dynacell.cellpose_dense.CellposeDense + init_args: + model_name: cpsam + checkpoint_tiles: 1 + slab_halfwidth: 1 + crop_size: 240 + seg_consistency_weight: 0.19 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..4007ddf28 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix2d_unetvit_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons_ctrl__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/a549__denv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_DENV_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..372c4b234 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix2d_unetvit_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons_ctrl__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/a549__mock/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_MOCK_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..60f17874e --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix2d_unetvit_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons_ctrl__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/a549__zikv/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_A549_ZIKV_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..4b645ad0d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (predict) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons_ctrl__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl/checkpoints/last.ckpt +data: + init_args: + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/ipsc/prediction.zarr +launcher: + job_name: pix2pix2D_PRED_NUCL_ON_IPSC_segcons_ctrl + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/train.yml new file mode 100644 index 000000000..3bde11e21 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_segcons_ctrl/ipsc_confocal/train.yml @@ -0,0 +1,72 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segcons_ctrl` arm (fit) of the baseline leaf nucleus/pix2pix2d_unetvit/ipsc_confocal/train.yml. +# Recipe delta vs that leaf: fork: model ckpt_path (the converged baseline checkpoint, weights only) + the fine-tune budget and LR of FORK_SCHEDULES; no other change (the no-term control of segcons). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_fit.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_segcons_ctrl + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_segcons_ctrl + dataset_ref: null +data: + init_args: + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: + - Phase3D + - Nuclei + w_key: Nuclei + spatial_size: + - 1 + - 624 + - 624 + num_samples: 2 +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_iPSC_NUCL_segcons_ctrl + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl/checkpoints + max_epochs: 4 +launcher: + job_name: pix2pix2d_unetvit_iPSC_NUCL_segcons_ctrl + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_segcons_ctrl + sbatch: + constraint: a40|a6000|l40s|h100|h200 + mem: 128G +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/latest-epoch=39-step=20000.ckpt + lr_g: 2.0e-05 + lr_d: 2.0e-05 + warmup_steps: 50 + ema_kimg: 2.0 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..92bcf2daf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,80 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: nucleus trained on ipsc_confocal, tested on A549 mantis denv. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/nucleus.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix2d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_spotlight__a549_mantis_h2b_denv + # A549 keys this organelle by gene; override the iPSC-side target + # from the target fragment so the resolver finds it on the A549 set. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__denv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_NUCL_ON_A549_DENV + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..5ebd44838 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,80 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: nucleus trained on ipsc_confocal, tested on A549 mantis mock. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/nucleus.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix2d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_spotlight__a549_mantis_h2b_mock + # A549 keys this organelle by gene; override the iPSC-side target + # from the target fragment so the resolver finds it on the A549 set. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__mock__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_NUCL_ON_A549_MOCK + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..b269513c4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,80 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: nucleus trained on ipsc_confocal, tested on A549 mantis zikv. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/nucleus.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix2d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_spotlight__a549_mantis_h2b_zikv + # A549 keys this organelle by gene; override the iPSC-side target + # from the target fragment so the resolver finds it on the A549 set. + dataset_ref: + target: h2b + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/a549__zikv__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_NUCL_ON_A549_ZIKV + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..b0e1d5e82 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,76 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix2d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix2d predict: nucleus trained on ipsc_confocal, tested on iPSC confocal. +# In-focus 2D track. The Z=1 checkpoint predicts over the FULL-Z 3D test store +# with z_window_size=1 (pix2pix2d_unetvit_predict overlay), emitting one window +# per z-plane -> a full-extent prediction store the existing focus-aware eval consumes +# unchanged. +# +# Source normalization is NormalizeSampled(Phase3D, fov_statistics, mean/std), +# reproducing the pix2pix2d fit exactly — the fit inherits it from +# targets/nucleus.yml and a MinMax source here would silently degrade every +# prediction. The target-inherited RandWeightedCropd is cleared: predict has no +# CPU augmentations. +# +# predict_method=sliding_window and predict_overlap Z=0 are overlay-owned; see +# model_overlays/pix2pix2d_unetvit_predict.yml for why (the lateral ViT 512x512 +# limit, and Z patch 1) -- it states the per-test-set caveat this leaf cannot. +# +# No z_reduction: at z_window_size=1 each plane comes from exactly one window, so +# there is nothing to reduce across (the 3D pix2pix leaves need `center` only +# because their 8-plane windows overlap). +# +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix2d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_spotlight__ipsc_confocal + +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # 2D benchmark (focus2d.halfwidth=1): predict only the 3-plane focus slab of each + # FOV/timepoint listed in this plane file (precompute-gt build.focus_planes, resolved + # exactly as the focus2d eval resolves it); every other plane of the full-extent store + # stays empty. Set null to predict every plane. + predict_z_planes: /hpc/projects/virtual_staining/training/dynacell/focus2d_planes/nucleus/ipsc__h1.json + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + +launcher: + job_name: pix2pix2D_spotlight_PRED_NUCL_ON_IPSC + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix2d_unetvit_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..d999a14fa --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,140 @@ +# pix2pix2d_unetvit (UNetViT generator + multi-scale PatchGAN, run +# Z-preserving at Z=1) fit on nucleus (Nuclei channel) — AICS iPSC confocal, +# in-focus 2D track. Mirror of the 3D +# nucleus/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml leaf, +# flattened onto the offline 5-plane in-focus slab store (z_window_size=1 +# emits one in-focus window per plane). +# +# ⚠ Mirrors train_4gpu_modernized.yml, NOT the stale sibling train.yml. The +# published pix2pix3d rows came from the modernized "Run D" recipe — the +# checkpoints carry loss_type='nonsat', lr 2e-4/2e-4, r1_gamma=10, +# ema_kimg=10, lecam_gamma=0.3, lambda_l1=10 and 201 generator_ema.* tensors +# — while train.yml still composes the LSGAN baseline overlay. All of Run D is +# baked into model_overlays/pix2pix2d_unetvit_fit.yml, so unlike the 3D leaves +# this file repeats none of it. +# +# The 3D leaf resolves data_path/source_channel/target_channel from the +# manifest via benchmark.dataset_ref, which points at the NON-focus store. +# The 2D track reads the `_focus.zarr` slab instead, so the resolver is +# disabled here (dataset_ref: null) and the three data fields are declared +# inline — the resolver hook raises on any data.init_args field co-declared +# with a full dataset_ref. +# +# The train_set fragment supplies data.class_path (HCSDataModule) plus +# split_ratio / mmap_preload / scratch_dir. targets/nucleus.yml supplies the +# NormalizeSampled(fov_statistics) normalization the pix2pix leaves use +# (mean/std on Phase3D, median/iqr on the target); only its RandWeightedCropd +# is list-replaced below, flattened [13,624,624] -> [1,624,624]. + +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/data_overlays/pix2pix2d_unetvit_fit.yml + - ../../../_internal/shared/model/model_overlays/pix2pix2d_unetvit_spotlight_fit.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + gene: Nuclei + target: nucleus + target_id: nucleus + train_set: ipsc_confocal + model_name: pix2pix2d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix2d_unetvit_spotlight + # Disable the manifest resolver: the 2D track reads the offline focus store, + # not the manifest-registered non-focus store. + dataset_ref: null + +data: + init_args: + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + # aics-hipsc in-focus slab store (Nuclei channel) — resolver disabled above. + source_channel: Phase3D + target_channel: Nuclei + data_path: /hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/cell_focus.zarr + normalizations: + # Source stays mean/std ON PURPOSE, twice over. (1) It is what makes this a + # matched comparison -- source preprocessing identical to the baseline. + # (2) Phase 1 ran preprocess with --channel_names Nuclei/Membrane only, so + # Phase3D carries NO otsu_threshold key, and NormalizeSampled indexes + # level_meta[self.subtrahend] with no fallback -> hard KeyError on the + # first batch. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `iqr` because that is what this family's baseline + # resolves to -- change the subtrahend, NEVER the divisor. deep_merge + # REPLACES lists, so restating this block wholesale replaces whatever was + # inherited; using the other family's divisor would silently change two + # things at once and break the "only the loss differs" premise. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Nuclei] + level: fov_statistics + subtrahend: otsu_threshold + divisor: iqr + # Flatten the target fragment's [13, 624, 624] weighted crop to Z=1. + augmentations: + - class_path: viscy_transforms.RandWeightedCropd + init_args: + keys: [Phase3D, Nuclei] + w_key: Nuclei + spatial_size: [1, 624, 624] + num_samples: 2 + +trainer: + logger: + init_args: + name: pix2pix2d_unetvit_spotlight_iPSC_NUCL + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + # monitor loss/validate_ema, matching the 3D Run-D leaves: ema_kimg is set, + # so the EMA generator is the one the recipe selects on and the one predict + # reports. Monitoring the raw loss/validate would pin a different epoch. + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: "epoch={epoch}-step={step}-loss={loss/validate_ema:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight/checkpoints + +launcher: + job_name: pix2pix2d_unetvit_spotlight_iPSC_NUCL + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix2d_unetvit_spotlight + sbatch: + # Narrow OFF the hardware_4gpu h100|h200 default, the opposite of the 3D + # leaf. 3D needed h200 because the GAN OOMs 80 GB at Z=8; measured at Z=1 + # on an A40 (44.7 GiB) peak is 13.3 GiB/rank at batch_size 4, so the 48 GB + # cards have 3x headroom and reserving Hopper for this would be queue + # squatting. The profile documents this opt-out explicitly. + constraint: "a40|a6000|l40s|h100|h200" + # 128G: the in-focus slab store is a 5-plane slice of the full-Z 3D store + # (~1/4 the Z), so the profile's 512G mmap_preload headroom is inherited 3D + # scale. Set in the LEAF BODY because launcher_profiles compose after model + # overlays and would otherwise win. + mem: "128G" diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..e21ccae1f --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix3d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_denv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..0778eb006 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix3d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_mock_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..215ece2ce --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix3d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_zikv_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..0438b44a0 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_segaux + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/train.yml new file mode 100644 index 000000000..bea1da153 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux/ipsc_confocal/train.yml @@ -0,0 +1,55 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux` arm (fit) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.5 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux + sbatch: + constraint: h200 +data: + init_args: + fg_mask_key: fg_mask diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..5d224fdb8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_denv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..5bd087706 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_mock_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..89b3e39de --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_zikv_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..88f4443f5 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_segaux_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..375e96730 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_segaux_seed1/ipsc_confocal/train.yml @@ -0,0 +1,56 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `segaux_seed1` arm (fit) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: the segaux arm's recipe + seed_everything: 1 (a second draw of the arm). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_segaux_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_segaux_seed1 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + seg_aux: + class_path: viscy_utils.losses.SegAuxDice + init_args: + c: 0.1 + seg_aux_weight: 2.5 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_segaux_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_segaux_seed1 + sbatch: + constraint: h200 +data: + init_args: + fg_mask_key: fg_mask +seed_everything: 1 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..a9d0fbfae --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,68 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: nucleus (Nuclei marker) trained on iPSC, predicting against a549_mantis_h2b_denv test. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix3d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_spotlight__a549_mantis_h2b_denv + # A549 manifest keys nucleus by gene (`h2b`); override the iPSC-side + # `nucleus` target from targets/nucleus.yml so the resolver finds h2b. + dataset_ref: + target: h2b + +model: + init_args: + # Best loss/validate_ema checkpoint, modernized Run-D 40ep run (job + # 33501549, converged early at epoch 15). The checkpoint was SELECTED on the + # EMA loss but predict runs the raw generator: see the ema_kimg / + # use_ema_at_predict block in model_overlays/pix2pix3d_unetvit_predict.yml, + # which pins that explicitly. + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__denv/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_NUCL_ON_A549_h2b_denv + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..254d9764a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,68 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: nucleus (Nuclei marker) trained on iPSC, predicting against a549_mantis_h2b_mock test. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix3d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_spotlight__a549_mantis_h2b_mock + # A549 manifest keys nucleus by gene (`h2b`); override the iPSC-side + # `nucleus` target from targets/nucleus.yml so the resolver finds h2b. + dataset_ref: + target: h2b + +model: + init_args: + # Best loss/validate_ema checkpoint, modernized Run-D 40ep run (job + # 33501549, converged early at epoch 15). The checkpoint was SELECTED on the + # EMA loss but predict runs the raw generator: see the ema_kimg / + # use_ema_at_predict block in model_overlays/pix2pix3d_unetvit_predict.yml, + # which pins that explicitly. + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__mock/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_NUCL_ON_A549_h2b_mock + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..68daa0bb1 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,68 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: nucleus (Nuclei marker) trained on iPSC, predicting against a549_mantis_h2b_zikv test. +base: + - ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix3d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_spotlight__a549_mantis_h2b_zikv + # A549 manifest keys nucleus by gene (`h2b`); override the iPSC-side + # `nucleus` target from targets/nucleus.yml so the resolver finds h2b. + dataset_ref: + target: h2b + +model: + init_args: + # Best loss/validate_ema checkpoint, modernized Run-D 40ep run (job + # 33501549, converged early at epoch 15). The checkpoint was SELECTED on the + # EMA loss but predict runs the raw generator: see the ema_kimg / + # use_ema_at_predict block in model_overlays/pix2pix3d_unetvit_predict.yml, + # which pins that explicitly. + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_NUCL_ON_A549_h2b_zikv + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..d4de8a2cf --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,64 @@ +# SPOTLIGHT ARM. Mechanical copy of the pix2pix3d_unetvit predict leaf: spotlight +# changes the training objective only, so inference, the predict model overlay +# and the Phase3D-only predict normalization are all identical to the baseline. +# Only model_name / experiment_id / ckpt_path / output_store / run_root / +# job_name differ. +# +# ⚠ ckpt_path names `last.ckpt` as a PLACEHOLDER -- the fit has not run yet. +# It is authored rather than left blank because `--ckpt best` resolves the +# checkpoint DIRECTORY from this field and exits if it is missing. Always +# submit with `--ckpt best`, and re-bake this path afterwards. +# +# pix2pix3d_unetvit predict: nucleus (Nuclei marker) against ipsc_confocal test_cropped. +base: + - ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml + - ../../../_internal/shared/model/launcher_profiles/mode_predict.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_spotlight__ipsc_confocal + +model: + init_args: + # Best loss/validate_ema checkpoint, modernized Run-D 40ep run (job + # 33501549, converged early at epoch 15). The checkpoint was SELECTED on the + # EMA loss but predict runs the raw generator: see the ema_kimg / + # use_ema_at_predict block in model_overlays/pix2pix3d_unetvit_predict.yml, + # which pins that explicitly. + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight/checkpoints/last.ckpt + +data: + init_args: + # override target-inherited normalizations: predict only reads source + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # clear target-inherited RandWeightedCropd; predict has no CPU augs + augmentations: [] + +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/ipsc/prediction.zarr + # Take each plane from the depth window centred on it instead of the mean + # of all 8 covering windows: that mean halves mid-band power (0.045 -> + # 0.021 of ground truth on an in-domain membrane FOV) and cancels none of + # the XY lattice, since all 8 share one XY grid. + z_reduction: center + +launcher: + job_name: pix2pix3d_unetvit_spotlight_PRED_NUCL + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_spotlight/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/train.yml new file mode 100644 index 000000000..dc849705c --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_spotlight/ipsc_confocal/train.yml @@ -0,0 +1,96 @@ +# pix2pix3d_unetvit MODERNIZED fit on nucleus (Nuclei channel of cell.zarr) — AICS iPSC confocal, 4-GPU DDP. +# +# Finalized "Run D" recipe: modernized overlay (nonsat + R1 + G-EMA, equal LR) +# + lambda_l1=10 + LeCam gamma=0.3 + 40 epochs. Those three deltas were the CLI +# overrides that produced the COMPLETED run at +# cell_diff_vs_viscy/ipsc/nucl/pix2pix3d_unetvit_modernized_lambdaL1_10_lecam_40ep +# (wandb best loss/validate_ema=0.585). Baked here so submission needs NO overrides. +base: + - ../../../_internal/shared/model/train_sets/ipsc_confocal.yml + - ../../../_internal/shared/model/targets/nucleus.yml + - ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml + - ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_spotlight_fit_ddp_modernized.yml + - ../../../_internal/shared/model/launcher_profiles/mode_fit.yml + - ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml + - ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml + +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_spotlight + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_spotlight_modernized + +data: + init_args: + # Spotlight needs the precomputed foreground mask from the store. Setting + # fg_mask_key also makes HCSDataModule patch the mask into gpu_augmentations + # so it is warped with the image; the engine re-binarizes it at the point of + # use, because the affine resamples with bilinear interpolation. + fg_mask_key: fg_mask + # Coarse FOV-slab floor, NOT a per-patch filter: the fraction is measured on + # the full-YX mask slab read before RandWeightedCropd runs, so it will + # essentially never reject anything. The real guard against a degenerate + # mask is the store-level foreground-fraction check in Phase 1.5. + # nonzero_threshold is deliberately omitted: with fg_mask_key set the mask + # branch is taken and it is never read. + min_nonzero_fraction: 0.001 + normalizations: + # Source stays mean/std ON PURPOSE, twice over. (1) It is what makes this a + # matched comparison -- source preprocessing identical to the baseline. + # (2) Phase 1 ran preprocess with --channel_names Nuclei/Membrane only, so + # Phase3D carries NO otsu_threshold key, and NormalizeSampled indexes + # level_meta[self.subtrahend] with no fallback -> hard KeyError on the + # first batch. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Phase3D] + level: fov_statistics + subtrahend: mean + divisor: std + # Target Otsu-centred: the Dice term's tunable sigmoid clamps everything at + # or below 0 to 0, so 0 must be the FG/BG boundary in the model's output + # space. DIVISOR IS `iqr` because that is what this family's baseline + # resolves to -- change the subtrahend, NEVER the divisor. deep_merge + # REPLACES lists, so restating this block wholesale replaces whatever was + # inherited; using the other family's divisor would silently change two + # things at once and break the "only the loss differs" premise. + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: [Nuclei] + level: fov_statistics + subtrahend: otsu_threshold + divisor: iqr + +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 + +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_spotlight_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: "epoch={epoch}-step={step}-loss={loss/validate_ema:.3f}" + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight/checkpoints + +launcher: + job_name: pix2pix3d_unetvit_spotlight_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_spotlight + # pix2pix3d GAN (UNetViT3D G + multiscale-patch D, large 3D crops) OOMs on + # 80 GB h100; needs h200 (141 GB). Narrow the hardware_4gpu h100|h200 default. + sbatch: + constraint: h200 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..066648897 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix3d_unetvit_v2 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_denv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..aadb13df6 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix3d_unetvit_v2 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_mock_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..484bd8193 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix3d_unetvit_v2 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_zikv_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..e8a115bc4 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_v2 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/train.yml new file mode 100644 index 000000000..990f23f7a --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2/ipsc_confocal/train.yml @@ -0,0 +1,47 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2` arm (fit) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: nothing (fresh retrain of the baseline recipe under its own run root). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_v2 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_v2 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2 + sbatch: + constraint: h200 diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml new file mode 100644 index 000000000..3598b757d --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_denv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_denv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_denv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_denv + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__a549_mantis_h2b_denv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_denv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__denv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml new file mode 100644 index 000000000..5d8a2d103 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_mock.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_mock.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_mock.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_mock + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__a549_mantis_h2b_mock + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_mock_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__mock diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml new file mode 100644 index 000000000..a437beca8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__a549_mantis_zikv.yml @@ -0,0 +1,45 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__a549_mantis_zikv.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/a549_mantis_h2b_zikv.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: a549_mantis_h2b_zikv + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__a549_mantis_h2b_zikv + dataset_ref: + target: h2b +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_ON_A549_h2b_zikv_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/a549__zikv diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml new file mode 100644 index 000000000..6fb4c1315 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/predict__ipsc_confocal.yml @@ -0,0 +1,43 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (predict) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/predict__ipsc_confocal.yml. +# Inference is identical to the baseline's; only the checkpoint, store and names differ. +# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards. +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/predict_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_predict.yml +- ../../../_internal/shared/model/launcher_profiles/mode_predict.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_predict_any_gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + trained_on: ipsc_confocal + predict_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2_seed1__ipsc_confocal +model: + init_args: + ckpt_path: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1/checkpoints/last.ckpt +data: + init_args: + normalizations: + - class_path: viscy_transforms.NormalizeSampled + init_args: + keys: + - Phase3D + level: fov_statistics + subtrahend: mean + divisor: std + augmentations: [] +trainer: + callbacks: + - class_path: viscy_utils.callbacks.prediction_writer.HCSPredictionWriter + init_args: + output_store: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc/prediction.zarr + z_reduction: center +launcher: + job_name: pix2pix3d_unetvit_PRED_NUCL_v2_seed1 + run_root: /hpc/projects/virtual_staining/training/dynacell/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc/ipsc diff --git a/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/train.yml b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/train.yml new file mode 100644 index 000000000..ee5152bf8 --- /dev/null +++ b/applications/dynacell/configs/benchmarks/virtual_staining/nucleus/pix2pix3d_unetvit_v2_seed1/ipsc_confocal/train.yml @@ -0,0 +1,48 @@ +# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the +# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md). +# Spotlight-v2 `v2_seed1` arm (fit) of the baseline leaf nucleus/pix2pix3d_unetvit/ipsc_confocal/train_4gpu_modernized.yml. +# Recipe delta vs that leaf: seed_everything: 1 (a second draw of the v2 baseline). +# Everything else, and the rationale for it, is the baseline leaf's. +base: +- ../../../_internal/shared/model/train_sets/ipsc_confocal.yml +- ../../../_internal/shared/model/targets/nucleus.yml +- ../../../_internal/shared/model/data_overlays/unetvit3d_fit.yml +- ../../../_internal/shared/model/model_overlays/pix2pix3d_unetvit_fit_ddp_modernized.yml +- ../../../_internal/shared/model/launcher_profiles/mode_fit.yml +- ../../../_internal/shared/model/launcher_profiles/hardware_4gpu.yml +- ../../../_internal/shared/model/launcher_profiles/runtime_shared.yml +benchmark: + task: virtual_staining + organelle: nucleus + train_set: ipsc_confocal + model_name: pix2pix3d_unetvit_v2_seed1 + experiment_id: nucleus__ipsc_confocal__pix2pix3d_unetvit_v2_seed1 +model: + init_args: + lambda_l1: 10.0 + lecam_gamma: 0.3 +trainer: + max_epochs: 40 + logger: + init_args: + name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_v2_seed1 + save_dir: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1 + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: step + - class_path: lightning.pytorch.callbacks.ModelCheckpoint + init_args: + monitor: loss/validate_ema + filename: epoch={epoch}-step={step}-loss={loss/validate_ema:.3f} + auto_insert_metric_name: false + every_n_epochs: 1 + save_top_k: 4 + save_last: true + dirpath: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1/checkpoints +launcher: + job_name: pix2pix3d_unetvit_iPSC_NUCL_4gpu_modernized_lambdaL1_10_lecam_40ep_v2_seed1 + run_root: /hpc/projects/comp.micro/virtual_staining/models/dynacell/ipsc/nucleus/pix2pix3d_unetvit_v2_seed1 + sbatch: + constraint: h200 +seed_everything: 1 diff --git a/applications/dynacell/src/dynacell/cellpose_dense.py b/applications/dynacell/src/dynacell/cellpose_dense.py new file mode 100644 index 000000000..260ed9750 --- /dev/null +++ b/applications/dynacell/src/dynacell/cellpose_dense.py @@ -0,0 +1,206 @@ +"""Differentiable dense outputs of a frozen Cellpose-SAM model (flows + cell-probability logit). + +Ported from the G4 segmenter gate (``experiments/2026-10-15_conditional-generation-review/ +gates/G4/segmenters.py``), which verified it against stock ``CellposeModel.eval``: flows and +cell-probability logits within 2.9e-6 max abs on real iPSC frames, and central +finite-difference gradients within 2.5e-3 relative error (cpsam). + +The input may be in any positive-affine intensity units (raw fluorescence, or a +normalized target or prediction): cellpose's ``normalize99`` (1st/99th percentile -> +[0, 1], no clip, flat image -> 0) is applied per image with its percentiles computed +under ``no_grad``, so gradients flow through the pixels and not through the statistics. +This mirrors how the eval feeds cpdino (``normalize=True`` on each side independently). + +The network is the stock checkpoint in cellpose's model directory +(``CELLPOSE_LOCAL_MODELS_PATH`` or ``~/.cellpose/models``), loaded by absolute path so a +missing file raises instead of falling back to another model or a download. +""" + +import numpy as np +import torch +import torch.nn.functional as F +from cellpose import models as cp_models +from cellpose import transforms as cp_transforms +from torch import Tensor, nn +from torch.utils.checkpoint import checkpoint + +__all__ = ["CellposeDense", "normalize99_diff"] + + +def normalize99_diff(x: Tensor) -> Tensor: + """Apply cellpose ``normalize99`` per image, with the percentiles under ``no_grad``. + + Parameters + ---------- + x : Tensor + Images, shape ``(B, ...)``. + + Returns + ------- + Tensor + ``(x - p1) / (p99 - p1)`` per image, unclipped; 0 where the percentile + range is below 1e-3 (cellpose's flat-image rule). + """ + with torch.no_grad(): + flat = x.reshape(x.shape[0], -1).float() + lo, hi = torch.quantile(flat, 0.01, dim=1), torch.quantile(flat, 0.99, dim=1) + ok = (hi - lo) > 1e-3 + scale = torch.where(ok, 1.0 / (hi - lo).clamp_min(1e-12), torch.zeros_like(hi)) + shape = (-1, *([1] * (x.ndim - 1))) + return (x - lo.view(shape)) * scale.view(shape) + + +class CellposeDense(nn.Module): + """Frozen Cellpose-SAM network returning differentiable dense outputs. + + Reproduces ``core.run_net`` (non-augmented): the image in channel 0 of 3 (the + others zero, as ``convert_image`` does), padded by ``get_pad_yx``, cut into + 256-px tiles at ``tile_overlap=0.1`` and blended with cellpose's taper mask. No + diameter rescale, matching the eval's ``diameter=None``. + + It is loaded on the CPU, in eval mode, and follows the module's ``.to(device)``. + The mode matters: cellpose builds the network in train mode, whose flows differ + from stock inference by up to 1.7 (measured), so ``train()`` keeps it in eval even + if this wrapper is ever a registered submodule. Parameter gradients are the caller's + to switch off; ``SegConsistencyLoss`` does it. + + Parameters + ---------- + model_name : str + File name of a Cellpose-SAM checkpoint in cellpose's model directory, e.g. + ``"cpsam"``. The cpdino family is the evaluation segmenter and is refused. + use_bfloat16 : bool + Load the weights in bfloat16, cellpose's default. + checkpoint_tiles : int or None + When the input needs a gradient, run the network on this many tiles at a time + under activation checkpointing: the backward pass then holds one such group's + activations (~5.7 GB per 256-px tile in bfloat16, measured on an A40) instead of + every tile's, for one extra forward pass. ``None`` keeps all activations. + """ + + BSIZE = 256 + TILE_OVERLAP = 0.1 + + def __init__(self, model_name: str, use_bfloat16: bool = True, checkpoint_tiles: int | None = 1) -> None: + super().__init__() + if checkpoint_tiles is not None and checkpoint_tiles < 1: + raise ValueError(f"checkpoint_tiles must be >= 1 or None, got {checkpoint_tiles}") + if model_name.startswith("cpdino"): + raise ValueError("cpdino is the evaluation segmenter and must not be used as a training segmenter") + path = cp_models.MODEL_DIR / model_name + if not path.is_file(): + raise FileNotFoundError(f"cellpose model {model_name!r} not found at {path}") + # Building the net random-initializes it before loading the checkpoint, which would + # advance the global RNG that HCSDataModule's train/val split draws from later; fork it + # so a segcons arm and its same-seed control split identically. + with torch.random.fork_rng(devices=[]): + cpm = cp_models.CellposeModel( + device=torch.device("cpu"), pretrained_model=str(path), use_bfloat16=use_bfloat16 + ) + if cpm.backbone != "sam_vitl": + raise ValueError(f"{model_name}: expected a SAM backbone, got {cpm.backbone}") + self.net = cpm.net.eval() + self.model_name = model_name + self.checkpoint_tiles = checkpoint_tiles + + def train(self, mode: bool = True) -> "CellposeDense": + """Keep the network in eval mode whatever ``mode`` is.""" + return super().train(False) + + @classmethod + def tiling(cls, ly: int, lx: int) -> tuple[tuple[int, int, int, int], list[tuple[int, int]]]: + """Return cellpose's padding and tile corners for a ``(ly, lx)`` image. + + ``get_pad_yx`` then ``make_tiles`` (non-augmented): the image is padded to a + multiple of 16 of at least ``BSIZE`` plus a margin, so a 240-px image pads to + exactly one 256-px tile while a 256-px one pads to 272 and needs 2 x 2 tiles. + + Returns + ------- + tuple + ``(yp1, yp2, xp1, xp2)`` padding and the ``(y, x)`` corner of every tile. + """ + bs = cls.BSIZE + yp1, yp2, xp1, xp2 = cp_transforms.get_pad_yx(ly, lx, min_size=(bs, bs)) + py, px = ly + yp1 + yp2, lx + xp1 + xp2 + ny = 1 if py <= bs else int(np.ceil((1.0 + 2 * cls.TILE_OVERLAP) * py / bs)) + nx = 1 if px <= bs else int(np.ceil((1.0 + 2 * cls.TILE_OVERLAP) * px / bs)) + ys = np.linspace(0, py - bs, ny).astype(int) + xs = np.linspace(0, px - bs, nx).astype(int) + return (yp1, yp2, xp1, xp2), [(int(a), int(c)) for a in ys for c in xs] + + def _net_flows(self, tiles: Tensor) -> Tensor: + """Run the network on ``(N, 3, 256, 256)`` tiles; return its ``(N, 3, 256, 256)`` output.""" + return self.net(tiles)[0] + + def _taper(self, device: torch.device) -> Tensor: + """Return cellpose's ``transforms._taper_mask`` for one tile.""" + bsize = self.BSIZE + xm = torch.arange(bsize, device=device, dtype=torch.float32) + xm = (xm - xm.mean()).abs() + mask = 1 / (1 + torch.exp((xm - (bsize / 2 - 20)) / 7.5)) + return mask[:, None] * mask[None, :] + + def forward(self, x: Tensor, batch_size: int = 8) -> dict[str, Tensor]: + """Compute the dense outputs of ``(B, 1, Y, X)`` images in any positive-affine units. + + Parameters + ---------- + x : Tensor + Images, shape ``(B, 1, Y, X)``. + batch_size : int + Tiles per network call without a gradient (see ``checkpoint_tiles`` with one). + + Returns + ------- + dict of str to Tensor + ``"flow"`` ``(B, 2, Y, X)`` (dY, dX) and ``"cellprob_logit"`` ``(B, 1, Y, X)``, + float32. + """ + if x.ndim != 4 or x.shape[1] != 1: + raise ValueError(f"expected (B, 1, Y, X), got {tuple(x.shape)}") + return self.dense_normalized(normalize99_diff(x.float()), batch_size=batch_size) + + def dense_normalized(self, xn: Tensor, batch_size: int = 8) -> dict[str, Tensor]: + """Compute the dense outputs of already ``normalize99``-ed images. + + Exposed for finite-difference checks: the normalization statistics are + stop-gradient by design, so only this path has an exact finite difference. + + Parameters + ---------- + xn : Tensor + Normalized images, shape ``(B, 1, Y, X)``. + batch_size : int + Tiles per network call without a gradient. + + Returns + ------- + dict of str to Tensor + As :meth:`forward`. + """ + b, _, ly0, lx0 = xn.shape + net_dtype = next(self.net.parameters()).dtype + xn = torch.cat([xn, torch.zeros_like(xn), torch.zeros_like(xn)], dim=1) + bs = self.BSIZE + pads, coords = self.tiling(ly0, lx0) + yp1, yp2, xp1, xp2 = pads + xn = F.pad(xn, (xp1, xp2, yp1, yp2)) + ly, lx = xn.shape[-2:] + tiles = torch.stack([xn[:, :, a : a + bs, c : c + bs] for a, c in coords], dim=1).reshape(-1, 3, bs, bs) + checkpointed = self.checkpoint_tiles is not None and tiles.requires_grad + step = self.checkpoint_tiles if checkpointed else batch_size + outs = [] + for j in range(0, tiles.shape[0], step): + chunk = tiles[j : j + step].to(net_dtype) + y = checkpoint(self._net_flows, chunk, use_reentrant=False) if checkpointed else self._net_flows(chunk) + outs.append(y.float()) + y = torch.cat(outs).reshape(b, len(coords), 3, bs, bs) + taper = self._taper(xn.device) + acc = xn.new_zeros((b, 3, ly, lx), dtype=torch.float32) + wsum = xn.new_zeros((ly, lx), dtype=torch.float32) + for i, (a, c) in enumerate(coords): + acc = acc + F.pad(y[:, i] * taper, (c, lx - c - bs, a, ly - a - bs)) + wsum = wsum + F.pad(taper, (c, lx - c - bs, a, ly - a - bs)) + yf = (acc / wsum)[:, :, yp1 : ly - yp2, xp1 : lx - xp2] + return {"flow": yf[:, :2], "cellprob_logit": yf[:, 2:3]} diff --git a/applications/dynacell/src/dynacell/evaluation/README.md b/applications/dynacell/src/dynacell/evaluation/README.md index 93c39b94a..10b6b9a0c 100644 --- a/applications/dynacell/src/dynacell/evaluation/README.md +++ b/applications/dynacell/src/dynacell/evaluation/README.md @@ -53,7 +53,7 @@ dynacell evaluate-grouped leaf=grouped//eval_grouped ``` - **Location:** `configs/benchmarks/virtual_staining/_internal/leaf/grouped//eval_grouped.yaml`. -- **Generated, mostly:** most buckets are written by `tools/generate_grouped_eval_configs.py` or `tools/generate_lite_benchmark_configs.py`; regenerate those rather than hand-editing them. The HEK and `celldiff_r2` buckets are hand-written. +- **Generated, mostly:** most buckets are written by `tools/generate_grouped_eval_configs.py`, `tools/generate_spotlight_v2_eval_configs.py` or `tools/generate_lite_benchmark_configs.py`; regenerate those rather than hand-editing them. The HEK and `celldiff_r2` buckets are hand-written. - **Suffixes** mark variants of a bucket, e.g. `__2d`, `__lite`, `__temporal`. - **`conditions` entries** may override `io.*`, `save.*`, `runtime.*`, `limit_positions`, `force_recompute.*`, `benchmark.dataset_ref` and `name`. Changing any field that affects model loading or segmentation raises an error. - **Always re-scored:** grouped leaves set `force_recompute.final_metrics: true`. To add a condition to a finished bucket without re-scoring the others, pass `force_recompute.final_metrics=false`. diff --git a/applications/dynacell/src/dynacell/evaluation/paths.py b/applications/dynacell/src/dynacell/evaluation/paths.py index 2a88063f7..6f788f2b6 100644 --- a/applications/dynacell/src/dynacell/evaluation/paths.py +++ b/applications/dynacell/src/dynacell/evaluation/paths.py @@ -243,7 +243,7 @@ "fnet2d_spotlight": "fnet2d_spotlight", "pix2pix3d_unetvit_spotlight": "pix2pix3d_spotlight", "pix2pix2d_unetvit_spotlight": "pix2pix2d_spotlight", - # Spotlight v2 first wave (their leaf generator ships with the Spotlight v2 configs), iPSC-trained + # Spotlight v2 first wave (tools/generate_spotlight_v2_leaves.py), iPSC-trained # nucleus + membrane. Same longest-prefix hazard as the v1 arms above: each token # extends its baseline's, so without an entry it collapses onto the baseline it is # compared against. `_segaux` = baseline + SegAuxDice term; `_seed1` = baseline at diff --git a/applications/dynacell/tests/test_benchmark_config_composition.py b/applications/dynacell/tests/test_benchmark_config_composition.py index 68c7490b1..71dd55418 100644 --- a/applications/dynacell/tests/test_benchmark_config_composition.py +++ b/applications/dynacell/tests/test_benchmark_config_composition.py @@ -38,6 +38,15 @@ ("membrane", "celldiff"), ("membrane", "fnet3d_paper"), ("membrane", "unetvit3d"), + # Spotlight arms (iPSC-trained). All four families x nucleus + membrane. + ("nucleus", "fnet3d_spotlight"), + ("nucleus", "fnet2d_spotlight"), + ("nucleus", "pix2pix3d_unetvit_spotlight"), + ("nucleus", "pix2pix2d_unetvit_spotlight"), + ("membrane", "fnet3d_spotlight"), + ("membrane", "fnet2d_spotlight"), + ("membrane", "pix2pix3d_unetvit_spotlight"), + ("membrane", "pix2pix2d_unetvit_spotlight"), ] # A549-trained train leaves. Kept separate from TRAIN_LEAVES because that list's @@ -75,11 +84,22 @@ ] # celldiff predict leaves are split per inference method; unetvit3d has a single file. -PREDICT_LEAF_FILES = [ - (organelle, "celldiff", f"predict__ipsc_confocal__{method}.yml") - for organelle in ("er", "mito", "nucleus", "membrane") - for method in ("denoise", "iterative", "sliding_window") -] + [(organelle, "unetvit3d", "predict__ipsc_confocal.yml") for organelle in ("er", "mito", "nucleus", "membrane")] +PREDICT_LEAF_FILES = ( + [ + (organelle, "celldiff", f"predict__ipsc_confocal__{method}.yml") + for organelle in ("er", "mito", "nucleus", "membrane") + for method in ("denoise", "iterative", "sliding_window") + ] + + [(organelle, "unetvit3d", "predict__ipsc_confocal.yml") for organelle in ("er", "mito", "nucleus", "membrane")] + + [ + # Spotlight arms -- iPSC condition ONLY. Their a549_* and hek_* siblings read + # test stores outside test_cropped/ (.../a549/mantis/test/, .../hek/mantis/test/), + # which test_predict_leaf_composes asserts against. + (organelle, f"{model}_spotlight", "predict__ipsc_confocal.yml") + for organelle in ("nucleus", "membrane") + for model in ("fnet3d", "fnet2d", "pix2pix3d_unetvit", "pix2pix2d_unetvit") + ] +) @pytest.mark.parametrize("organelle,model", TRAIN_LEAVES) @@ -219,6 +239,26 @@ def test_fnet3d_paper_leaf_preserves_32true_precision() -> None: "fnet3d_t01": {"batch_size": 48, "z_window_size": 32, "yx_patch_size": [64, 64], "num_workers": 8}, "fnet3d_tspread": {"batch_size": 48, "z_window_size": 32, "yx_patch_size": [64, 64], "num_workers": 8}, "unext2": {"batch_size": 32, "z_window_size": 20, "yx_patch_size": [384, 384], "num_workers": 8}, + # Spotlight arms reuse their baseline's data overlay untouched -- the only + # intended delta is the loss (plus fg_mask_key and the target subtrahend). + # Values are therefore the BASELINE's, verified equal to it when these leaves + # were authored; a drift here means the spotlight leaf stopped being a + # matched comparison. Their baselines are absent from this table only because + # the 2D and pix2pix families are absent from TRAIN_LEAVES. + "fnet3d_spotlight": {"batch_size": 48, "z_window_size": 32, "yx_patch_size": [64, 64], "num_workers": 8}, + "fnet2d_spotlight": {"batch_size": 48, "z_window_size": 1, "yx_patch_size": [64, 64], "num_workers": 8}, + "pix2pix3d_unetvit_spotlight": { + "batch_size": 4, + "z_window_size": 13, + "yx_patch_size": [512, 512], + "num_workers": 4, + }, + "pix2pix2d_unetvit_spotlight": { + "batch_size": 4, + "z_window_size": 1, + "yx_patch_size": [512, 512], + "num_workers": 4, + }, } @@ -742,7 +782,13 @@ def test_sample_matched_unext2_2d_predicts_agree_on_one_checkpoint(organelle: st "membrane": ("train/cell.zarr", "test_cropped/cell.zarr", "Membrane"), } -_MIGRATED_TRAIN_LEAVES = [(o, m) for o, m in TRAIN_LEAVES if o in _MIGRATED_TARGET_INFO] +# Leaves that deliberately bypass the manifest resolver (``dataset_ref: null``) +# and declare data_path inline. The in-focus 2D track reads the offline +# `_focus.zarr` slab, which has no manifest entry, so resolving them against the +# fixture manifest would assert the wrong store. Their 3D baselines are covered. +_UNMIGRATED_MODELS = frozenset({"fnet2d_spotlight", "pix2pix2d_unetvit_spotlight"}) + +_MIGRATED_TRAIN_LEAVES = [(o, m) for o, m in TRAIN_LEAVES if o in _MIGRATED_TARGET_INFO and m not in _UNMIGRATED_MODELS] _MIGRATED_PREDICT_LEAVES = [(o, m) for o, m in PREDICT_LEAVES if o in _MIGRATED_TARGET_INFO] @@ -1067,11 +1113,26 @@ def test_joint_train_smoke_leaf_composes() -> None: for pool in ("ipsc_confocal", "a549_mantis", "joint_ipsc_confocal_a549_mantis") ) | frozenset( - # The seed replicate only changes the seed, so it keeps the baseline's bs=4 - # per-rank footprint and its measured opt-out. - f"{organelle}/pix2pix2d_unetvit_seed1/ipsc_confocal/train.yml" + # The pix2pix2d spotlight arms carry the same measured per-rank peak as the + # baseline they copy (13.3 GiB at bs=4), so they inherit the same opt-out. + f"{organelle}/pix2pix2d_unetvit_spotlight/ipsc_confocal/train.yml" for organelle in ("nucleus", "membrane") ) + | frozenset( + # Spotlight-v2 pix2pix2d arms (generate_spotlight_v2_leaves.py): the segaux arm adds + # only a per-patch Dice term and the seed replicate only changes the seed, so both + # keep the baseline's bs=4 per-rank footprint and its measured opt-out. + f"{organelle}/pix2pix2d_unetvit_{suffix}/ipsc_confocal/train.yml" + for organelle in ("nucleus", "membrane") + for suffix in ("segaux", "segauxself", "seed1") + ) + | frozenset( + # P1 fine-tunes of the same baseline (nucleus). The control changes only the budget, LR and + # starting weights. The segcons arm adds cpsam: ~1.2 GB of bf16 weights plus ~0.07 GB per + # sample with per-tile checkpointing (A40 bench, 2026-10-15), so ~15 GiB/rank at bs=4. + f"nucleus/pix2pix2d_unetvit_{suffix}/ipsc_confocal/train.yml" + for suffix in ("segcons", "segcons_ctrl") + ) | frozenset( # Warmup-matched refit of every baseline fit, plus its second draw: only # warmup_steps (and the seed) change, so the bs=4 footprint is the baseline's. @@ -1251,10 +1312,35 @@ def test_celldiff_lite_leaf_takes_the_fast_overlay(leaf: Path) -> None: # all eight sit on hardware_4gpu_long.yml (7 days) instead. Every other 4-GPU # leaf finishes inside 4 days; a 7-day 4-GPU H100/H200 allocation backfills far # worse, so this list should grow only on evidence. -_LONG_WALL_TRAIN_LEAVES = frozenset( - f"{organelle}/{model}/joint_ipsc_confocal_a549_mantis/train.yml" - for organelle in ("er", "mito", "nucleus", "membrane") - for model in ("fcmae_vscyto3d_pretrained", "fcmae_vscyto3d_scratch") +_LONG_WALL_TRAIN_LEAVES = ( + frozenset( + f"{organelle}/{model}/joint_ipsc_confocal_a549_mantis/train.yml" + for organelle in ("er", "mito", "nucleus", "membrane") + for model in ("fcmae_vscyto3d_pretrained", "fcmae_vscyto3d_scratch") + ) + | frozenset( + # Spotlight-v2 UNeXt2-3D iPSC fits from scratch (fresh v2 baseline + its segaux arm). + # Measured on the April iPSC runs of the same 4-GPU recipe, consecutive checkpoint + # mtimes within one allocation (2026-04-30): nucleus e96 00:39:27 -> e98 01:38:24 + # = 2.04 ep/h, e98 -> e111 08:09:59 = 1.99 ep/h; membrane e134 09:21:15 -> e136 + # 10:21:36 = 1.99 ep/h, e146 15:52:49 -> e147 16:22:49 = 2.00 ep/h. 200 epochs at + # ~2.0 ep/h is ~100 h, over the 96 h default. The `_seed1` second draws are the same + # recipe with seed_everything: 1, so the same rate applies. + f"{organelle}/fcmae_vscyto3d_scratch_{suffix}/ipsc_confocal/train.yml" + for organelle in ("nucleus", "membrane") + for suffix in ("v2", "segaux", "v2_seed1", "segaux_seed1") + ) + | frozenset( + # The membrane SAUNA arm of the same recipe: its segaux source ran 2.44 ep/h (epoch=125 + # 2026-09-27 13:44:58 -> epoch=154 2026-09-28 01:38:59), 82 h for 200 epochs, and SAUNA + # cost the FNet-3D nucleus fit +7.6%, ~88 h against the 96 h default. + {"membrane/fcmae_vscyto3d_scratch_segaux_sauna/ipsc_confocal/train.yml"} + ) + | frozenset( + # The membrane cpout arm: the same segaux recipe on a thin-wall mask, so the same measured + # 2.44 ep/h of its segaux source (checkpoint mtimes above), 82 h for 200 epochs. + {"membrane/fcmae_vscyto3d_scratch_segaux_cpout/ipsc_confocal/train.yml"} + ) ) _LONG_WALL_TIME = "7-00:00:00" _DEFAULT_4GPU_TIME = "4-00:00:00" diff --git a/applications/dynacell/tests/test_cellpose_dense.py b/applications/dynacell/tests/test_cellpose_dense.py new file mode 100644 index 000000000..aebb75c44 --- /dev/null +++ b/applications/dynacell/tests/test_cellpose_dense.py @@ -0,0 +1,187 @@ +"""CellposeDense (differentiable Cellpose-SAM) against stock cellpose, and as a SegConsistencyLoss segmenter. + +The network is ViT-L: a 256-px tile takes ~27 s forward on 6 CPU cores (measured), so the +tests that run it need a GPU and the stock ``cpsam`` checkpoint in cellpose's model dir. +""" + +import numpy as np +import pytest +import torch + +pytest.importorskip("cellpose") + +from cellpose import models as cp_models # noqa: E402 +from cellpose import transforms as cp_transforms # noqa: E402 +from generate_spotlight_v2_leaves import SEG_CONSISTENCY_ARGS # noqa: E402 + +from dynacell.cellpose_dense import CellposeDense, normalize99_diff # noqa: E402 +from dynacell.engine import DynacellUNet # noqa: E402 +from viscy_utils.losses import SegConsistencyLoss # noqa: E402 + +needs_cpsam = pytest.mark.skipif( + not torch.cuda.is_available() or not (cp_models.MODEL_DIR / "cpsam").is_file(), + reason="needs a GPU and the cpsam checkpoint in cellpose's model directory", +) + + +def _nuclei_image(shape: tuple[int, int], seed: int = 0) -> np.ndarray: + """Bright disks of varying intensity on noise, in arbitrary units.""" + rng = np.random.default_rng(seed) + yy, xx = np.mgrid[: shape[0], : shape[1]] + img = np.zeros(shape, np.float32) + for _ in range(14): + cy, cx, r = rng.uniform(15, shape[0] - 15), rng.uniform(15, shape[1] - 15), rng.uniform(8, 16) + img += ((yy - cy) ** 2 + (xx - cx) ** 2 < r**2) * rng.uniform(0.5, 1.0) + return (300.0 * img + 100.0 + rng.normal(0, 10.0, shape)).astype(np.float32) + + +@pytest.fixture(scope="module") +def cpsam_bf16() -> CellposeDense: + return CellposeDense("cpsam").cuda() + + +def test_configured_crop_is_one_cellpose_tile(): + """The segcons leaves' crop pads to exactly one tile; a 256-px crop would pad to 2 x 2.""" + crop = SEG_CONSISTENCY_ARGS["crop_size"] + _, coords = CellposeDense.tiling(crop, crop) + assert len(coords) == 1 + assert len(CellposeDense.tiling(256, 256)[1]) == 4 + + +@needs_cpsam +def test_train_keeps_the_network_in_eval(cpsam_bf16): + """Even as a registered submodule, a parent's train() leaves cellpose's network in eval mode.""" + parent = torch.nn.ModuleDict({"seg": cpsam_bf16}) + parent.train() + assert not cpsam_bf16.training and not any(m.training for m in cpsam_bf16.net.modules()) + + +@pytest.mark.skipif(not (cp_models.MODEL_DIR / "cpsam").is_file(), reason="needs the cpsam checkpoint") +def test_construction_leaves_the_global_torch_rng_untouched(): + """Building the segmenter must not shift the seeded torch RNG the datamodule's split draws from. + + ``HCSDataModule`` splits train/val FOVs with ``torch.randperm``; otherwise a segcons arm and + its same-seed control would train on different splits. + """ + torch.manual_seed(42) + reference = torch.randperm(50) + torch.manual_seed(42) + CellposeDense("cpsam") + assert torch.equal(reference, torch.randperm(50)) + + +def test_refuses_the_evaluation_segmenter_and_missing_models(): + with pytest.raises(ValueError, match="evaluation segmenter"): + CellposeDense("cpdino") + with pytest.raises(FileNotFoundError, match="not found"): + CellposeDense("no_such_cellpose_model") + with pytest.raises(ValueError, match="checkpoint_tiles"): + CellposeDense("cpsam", checkpoint_tiles=0) + + +def test_normalization_matches_cellpose_normalize99(): + img = _nuclei_image((96, 80)) + ours = normalize99_diff(torch.from_numpy(img)[None, None])[0, 0].numpy() + np.testing.assert_allclose(ours, cp_transforms.normalize99(img), atol=1e-5) + flat = normalize99_diff(torch.full((1, 1, 8, 8), 3.0)) + assert torch.equal(flat, torch.zeros_like(flat)) + + +@needs_cpsam +def test_dense_outputs_match_stock_cellpose(cpsam_bf16): + """Same flows and cell-probability logits as ``CellposeModel.eval`` on the same normalized input. + + Two overlapping tiles exercise the taper blend. The input is normalized once and fed to + both: in bfloat16 the ~1e-6 float differences between the two normalize99 implementations + move single outputs by up to 0.2 (measured), which says nothing about the tiling path. + """ + img = cp_transforms.normalize99(_nuclei_image((256, 300))).astype(np.float32) + with torch.no_grad(): + out = cpsam_bf16.dense_normalized(torch.from_numpy(img)[None, None].cuda()) + stock = cp_models.CellposeModel(gpu=True, pretrained_model=str(cp_models.MODEL_DIR / "cpsam")) + _, flows, _ = stock.eval(img, normalize=False, diameter=None, channel_axis=None, compute_masks=False) + np.testing.assert_allclose(out["flow"][0].cpu().numpy(), flows[1], atol=1e-5) + np.testing.assert_allclose(out["cellprob_logit"][0, 0].cpu().numpy(), flows[2], atol=1e-5) + assert np.abs(flows[1]).mean() > 0.05 # the image has cells, so the parity is not 0 == 0 + + +@needs_cpsam +def test_input_gradient_matches_finite_difference(): + """Central difference on the post-normalization path (statistics are stop-gradient), TF32 off.""" + seg = CellposeDense("cpsam", use_bfloat16=False).cuda() + tf32 = (torch.backends.cudnn.allow_tf32, torch.backends.cuda.matmul.allow_tf32) + torch.backends.cudnn.allow_tf32 = torch.backends.cuda.matmul.allow_tf32 = False + try: + g = torch.Generator(device="cuda").manual_seed(0) + x = torch.rand(1, 1, 64, 64, device="cuda", generator=g).requires_grad_(True) + out = seg.dense_normalized(x) + w = {k: torch.randn(out[k].shape, device="cuda", generator=g) for k in out} + + def f(z: torch.Tensor) -> torch.Tensor: + o = seg.dense_normalized(z) + return sum((o[k].double() * w[k]).sum() for k in o) + + f(x).backward() + v = torch.randn(x.shape, device="cuda", generator=g) + v = v / v.norm() * x.detach().norm() * 1e-2 + with torch.no_grad(): + num = float((f(x.detach() + v) - f(x.detach() - v)) / 2) + ana = float((x.grad * v).sum()) + finally: + torch.backends.cudnn.allow_tf32, torch.backends.cuda.matmul.allow_tf32 = tf32 + assert torch.isfinite(x.grad).all() + assert abs(num - ana) / abs(num) < 1e-2 + + +@needs_cpsam +def test_activation_checkpointing_keeps_outputs_and_gradient(): + """Checkpointed single tiles equal a stored pass over the same single tiles (2 tiles). + + Same grouping on both sides: regrouping tiles alone moves the input gradient by 5e-4 + (TF32) / 1.2e-5 (fp32) relative norm (measured), from the batched kernels, not checkpointing. + """ + img = torch.from_numpy(_nuclei_image((64, 300)))[None, None].cuda() + results = [] + for tiles in (1, None): + seg = CellposeDense("cpsam", use_bfloat16=False, checkpoint_tiles=tiles).cuda() + x = img.clone().requires_grad_(True) + out = seg(x, batch_size=1) + (out["flow"].square().sum() + out["cellprob_logit"].sum()).backward() + results.append((out["flow"].detach(), x.grad)) + del seg + torch.testing.assert_close(results[0][0], results[1][0], rtol=0, atol=0) + torch.testing.assert_close(results[0][1], results[1][1], rtol=0, atol=0) + assert results[0][1].abs().sum() > 0 + + +@needs_cpsam +def test_seg_consistency_through_cpsam_trains_a_backbone(cpsam_bf16): + """Zero at pred == target; one DynacellUNet step under bf16 autocast puts its gradient on the backbone.""" + target = torch.from_numpy(np.stack([_nuclei_image((64, 64), seed=s) for s in range(4)])).reshape(2, 1, 2, 64, 64) + target = target.repeat_interleave(2, dim=2).cuda() # (2, 1, 4, 64, 64) + loss_fn = SegConsistencyLoss(cpsam_bf16, crop_size=64) + # The loss freezes its segmenter, and the LightningModule's train() cannot reach it. + assert not cpsam_bf16.training and not any(p.requires_grad for p in cpsam_bf16.parameters()) + assert float(loss_fn(target.clone(), target)) == pytest.approx(0.0, abs=1e-6) + + torch.manual_seed(0) + module = DynacellUNet( + architecture="FNet3D", + model_config={"in_channels": 1, "out_channels": 1, "depth": 1, "mult_chan": 8, "in_stack_depth": 4}, + seg_consistency=loss_fn, + seg_consistency_weight=1.0, + log_batches_per_epoch=0, + ).cuda() + module.train() + assert not cpsam_bf16.training + module.log = lambda *args, **kwargs: None + batch = {"source": torch.randn_like(target), "target": target} + with torch.autocast("cuda", dtype=torch.bfloat16): + pred = module(batch["source"]) + segcons = loss_fn(pred, batch["target"]) + assert float(segcons.detach()) > 0 + segcons.backward() + grads = [p.grad for p in module.model.parameters()] + assert all(g is not None and torch.isfinite(g).all() for g in grads) + assert sum(float(g.abs().sum()) for g in grads) > 0 + assert all(p.grad is None for p in cpsam_bf16.parameters()) diff --git a/applications/dynacell/tests/test_evaluate_compose.py b/applications/dynacell/tests/test_evaluate_compose.py index 1505e8909..077193570 100644 --- a/applications/dynacell/tests/test_evaluate_compose.py +++ b/applications/dynacell/tests/test_evaluate_compose.py @@ -355,10 +355,10 @@ def test_every_grouped_leaf_composes(bucket: str) -> None: # Every grouped leaf is either emitted by a generator or deliberately hand-written. -# Two generators stamp an Auto-generated by line into their output: -# generate_grouped_eval_configs.py and generate_lite_benchmark_configs.py. -# Hand-written buckets carry no such line, and the two kinds share one -# directory, so nothing in the path distinguishes them. +# Three generators stamp an Auto-generated by line into their output: +# generate_grouped_eval_configs.py, generate_spotlight_v2_eval_configs.py and +# generate_lite_benchmark_configs.py. Hand-written buckets carry no such line, and +# the two kinds share one directory, so nothing in the path distinguishes them. # # That matters because regenerating writes only the generated set: a hand-written # bucket sitting beside them is left untouched and can silently go stale against a diff --git a/applications/dynacell/tests/test_paths.py b/applications/dynacell/tests/test_paths.py index 267c02e09..8f285ef5c 100644 --- a/applications/dynacell/tests/test_paths.py +++ b/applications/dynacell/tests/test_paths.py @@ -19,6 +19,8 @@ from pathlib import Path import pytest +from generate_grouped_eval_configs import _split_model_variant +from generate_spotlight_v2_leaves import ARMS from dynacell.evaluation.paths import ( MODELS_ROOT, @@ -39,10 +41,9 @@ _DATA_ROOT = "/hpc/projects/virtual_staining/training/dynacell" -# Spotlight-v2 first-wave model tokens, written out so each must resolve to itself -# below rather than silently re-keying onto its baseline. Their leaf generator, and the -# test that pins this list to it, ship with the Spotlight v2 configs. -# `celldiff_segaux_iterative` is the CellDiff-3D store dir. +# Spotlight-v2 first-wave model tokens (tools/generate_spotlight_v2_leaves.py), written +# out so a generator change that renames an arm fails here instead of silently +# re-keying its eval dirs. `celldiff_segaux_iterative` is the CellDiff-3D store dir. _SPOTLIGHT_V2_MODELS: tuple[str, ...] = ( "fnet2d_segaux", "fnet3d_paper_segaux", @@ -497,6 +498,12 @@ def test_canonical_model_name(run_dir_name: str, expected: str) -> None: assert canonical_model_name(run_dir_name) == expected +def test_spotlight_v2_models_match_the_leaf_generator() -> None: + """The pinned v2 token list is exactly what the leaf generator emits (plus the 3D store dir).""" + emitted = {arm.model for arm in ARMS} | {arm.store_dir for arm in ARMS} + assert emitted == set(_SPOTLIGHT_V2_MODELS) + + @pytest.mark.parametrize( ("model_name", "run_dir", "expected"), [ @@ -537,6 +544,22 @@ def test_predict_only_arm_resolves_from_model_name_not_the_baseline_ckpt() -> No assert resolve_model({"model_name": "pix2pix2d_unetvit", "train_set": "ipsc_confocal"}, ckpt) == "pix2pix2d_unetvit" +def test_spotlight_v2_celldiff_store_dir_splits_into_model_and_variant() -> None: + """The grouped parser reads each v2 store dir as the arm, not as a baseline variant.""" + assert _split_model_variant("celldiff_segaux_iterative", "x") == ("celldiff_segaux", "iterative") + assert _split_model_variant("celldiff_2d_segaux", "x") == ("celldiff_2d_segaux", None) + assert _split_model_variant("celldiff_2d_seed1", "x") == ("celldiff_2d_seed1", None) + assert _split_model_variant("celldiff_cjoint_iterative", "x") == ("celldiff_cjoint", "iterative") + assert _split_model_variant("celldiff_ccond_iterative", "x") == ("celldiff_ccond", "iterative") + assert _split_model_variant("celldiff_2d_cjoint", "x") == ("celldiff_2d_cjoint", None) + assert _split_model_variant("celldiff_2d_ccond", "x") == ("celldiff_2d_ccond", None) + assert _split_model_variant("celldiff_2d_bglp", "x") == ("celldiff_2d_bglp", None) + assert _split_model_variant("celldiff_2d_bgflat", "x") == ("celldiff_2d_bgflat", None) + for model in _SPOTLIGHT_V2_MODELS: + if not model.startswith("celldiff"): + assert _split_model_variant(model, "x") == (model, None) + + def test_canonical_model_name_unknown_raises() -> None: with pytest.raises(ValueError): canonical_model_name("totally_unknown_model") diff --git a/applications/dynacell/tools/generate_grouped_eval_configs.py b/applications/dynacell/tools/generate_grouped_eval_configs.py index 95a39726c..0bfa89968 100644 --- a/applications/dynacell/tools/generate_grouped_eval_configs.py +++ b/applications/dynacell/tools/generate_grouped_eval_configs.py @@ -31,6 +31,7 @@ from pathlib import Path import yaml +from generate_spotlight_v2_leaves import ARMS from dynacell.evaluation import paths from dynacell.evaluation.paths import PAPER_KEY, eval_leaf, pred_cache_dir @@ -77,12 +78,77 @@ # same rule as fnet2d_voxelmatched: evaluate in focused sibling buckets. "pix2pix2d_unetvit_wmatch": "pix2pix2d_wmatch", "pix2pix2d_unetvit_wmatch_seed1": "pix2pix2d_wmatch_seed1", - # Second draws of four 2D baselines (seed 1), scored by the 2D appendix's - # seed-vs-seed check in the `__2d_focus2d_seed1` buckets. + # Spotlight-loss arms (iPSC-trained nucleus + membrane). Must agree with + # PAPER_KEY in dynacell.evaluation.paths -- test_paper_key_maps_agree_on_overlap + # pins the two maps against each other. + "fnet3d_spotlight": "fnet3d_spotlight", + "fnet2d_spotlight": "fnet2d_spotlight", + "pix2pix3d_unetvit_spotlight": "pix2pix3d_spotlight", + "pix2pix2d_unetvit_spotlight": "pix2pix2d_spotlight", + # Spotlight v2 first wave (tools/generate_spotlight_v2_leaves.py). Same agreement + # rule with PAPER_KEY. `celldiff_segaux` is the model; its store dir + # `celldiff_segaux_iterative` splits into (celldiff_segaux, iterative). + "fnet2d_segaux": "fnet2d_segaux", + "fnet3d_paper_segaux": "fnet3d_segaux", + "fcmae_vscyto2d_scratch_segaux": "unext2_2d_segaux", + "fcmae_vscyto3d_scratch_segaux": "unext2_segaux", + "pix2pix2d_unetvit_segaux": "pix2pix2d_segaux", + "pix2pix3d_unetvit_segaux": "pix2pix3d_segaux", + "celldiff_2d_segaux": "celldiff_2d_segaux", + "celldiff_segaux": "celldiff_segaux", "fnet2d_seed1": "fnet2d_seed1", + "fnet3d_paper_seed1": "fnet3d_seed1", "fcmae_vscyto2d_scratch_seed1": "unext2_2d_seed1", "pix2pix2d_unetvit_seed1": "pix2pix2d_seed1", "celldiff_2d_seed1": "celldiff_2d_seed1", + "fcmae_vscyto3d_scratch_v2": "unext2_v2", + "pix2pix3d_unetvit_v2": "pix2pix3d_v2", + "fcmae_vscyto2d_scratch_jointsteps": "unext2_2d_jointsteps", + "fcmae_vscyto2d_scratch_l1": "unext2_2d_l1", + "fcmae_vscyto2d_scratch_safecrop": "unext2_2d_safecrop", + "celldiff_2d_cjoint": "celldiff_2d_cjoint", + "celldiff_2d_ccond": "celldiff_2d_ccond", + "celldiff_cjoint": "celldiff_cjoint", + "celldiff_ccond": "celldiff_ccond", + # Stage 2 #1 self-consistent seg-aux arms; same agreement rule with PAPER_KEY. + "fnet2d_segauxself": "fnet2d_segauxself", + "fcmae_vscyto2d_scratch_segauxself": "unext2_2d_segauxself", + "pix2pix2d_unetvit_segauxself": "pix2pix2d_segauxself", + "celldiff_2d_segauxself": "celldiff_2d_segauxself", + "pix2pix2d_unetvit_last": "pix2pix2d_last", + "fcmae_vscyto2d_scratch_l1segaux": "unext2_2d_l1segaux", + "fcmae_vscyto2d_scratch_l1seed1": "unext2_2d_l1seed1", + "fnet2d_segaux_seed1": "fnet2d_segaux_seed1", + "fnet3d_paper_segaux_seed1": "fnet3d_segaux_seed1", + "pix2pix3d_unetvit_v2_seed1": "pix2pix3d_v2_seed1", + "pix2pix3d_unetvit_segaux_seed1": "pix2pix3d_segaux_seed1", + "fcmae_vscyto3d_scratch_v2_seed1": "unext2_v2_seed1", + "fcmae_vscyto3d_scratch_segaux_seed1": "unext2_segaux_seed1", + "fnet3d_paper_segaux_halfw": "fnet3d_segaux_halfw", + "fnet3d_paper_segaux_doublew": "fnet3d_segaux_doublew", + "fnet3d_vscyto3daug_v2": "fnet3d_vscyto3daug_v2", + "fnet3d_vscyto3daug_v2_seed1": "fnet3d_vscyto3daug_v2_seed1", + "fnet3d_vscyto3daug_segaux": "fnet3d_vscyto3daug_segaux", + "fnet3d_vscyto3daug_segaux_seed1": "fnet3d_vscyto3daug_segaux_seed1", + "fnet3d_vscyto3daug_segaux_sauna": "fnet3d_vscyto3daug_segaux_sauna", + "fnet3d_vscyto3daug_segaux_cldice": "fnet3d_vscyto3daug_segaux_cldice", + "fnet3d_vscyto3daug_segaux_halfw": "fnet3d_vscyto3daug_segaux_halfw", + "fnet3d_vscyto3daug_segaux_doublew": "fnet3d_vscyto3daug_segaux_doublew", + "fcmae_vscyto3d_scratch_segaux_sauna": "unext2_segaux_sauna", + "pix2pix3d_unetvit_segaux_sauna": "pix2pix3d_segaux_sauna", + "pix2pix3d_unetvit_segaux_sauna_seed1": "pix2pix3d_segaux_sauna_seed1", + "fcmae_vscyto3d_scratch_segaux_cpout": "unext2_segaux_cpout", + "celldiff_2d_bglp": "celldiff_2d_bglp", + "celldiff_2d_bgflat": "celldiff_2d_bgflat", + "fnet3d_paper_histmatch": "fnet3d_histmatch", + "pix2pix3d_unetvit_v2_histmatch": "pix2pix3d_v2_histmatch", + "fcmae_vscyto3d_scratch_v2_histmatch": "unext2_v2_histmatch", + "fnet3d_vscyto3daug_segcons": "fnet3d_vscyto3daug_segcons", + "fnet3d_vscyto3daug_segcons_ctrl": "fnet3d_vscyto3daug_segcons_ctrl", + "fcmae_vscyto3d_scratch_segcons": "unext2_segcons", + "fcmae_vscyto3d_scratch_segcons_ctrl": "unext2_segcons_ctrl", + "pix2pix2d_unetvit_segcons": "pix2pix2d_segcons", + "pix2pix2d_unetvit_segcons_ctrl": "pix2pix2d_segcons_ctrl", } # iPSC: target key in aics-hipsc manifest. @@ -137,21 +203,85 @@ # refit; without these entries its stores raised "unknown model code-name". "pix2pix2d_unetvit_wmatch", "pix2pix2d_unetvit_wmatch_seed1", - # 2D baseline seed replicates, deterministic like their baselines. + # Spotlight-loss arms. Deterministic for the same reason their baselines are; + # spotlight changes the training objective only, never inference. Matching here + # is exact, so every on-disk run-dir token must appear verbatim or + # _split_model_variant raises "unknown model code-name" when predictions land. + "fnet3d_spotlight", + "fnet2d_spotlight", + "pix2pix3d_unetvit_spotlight", + "pix2pix2d_unetvit_spotlight", + # Spotlight v2 first wave: deterministic for the same reason as their baselines. + "fnet2d_segaux", + "fnet3d_paper_segaux", + "fcmae_vscyto2d_scratch_segaux", + "fcmae_vscyto3d_scratch_segaux", + "pix2pix2d_unetvit_segaux", + "pix2pix3d_unetvit_segaux", "fnet2d_seed1", + "fnet3d_paper_seed1", "fcmae_vscyto2d_scratch_seed1", "pix2pix2d_unetvit_seed1", + "fcmae_vscyto3d_scratch_v2", + "pix2pix3d_unetvit_v2", + "fcmae_vscyto2d_scratch_jointsteps", + "fcmae_vscyto2d_scratch_l1", + "fcmae_vscyto2d_scratch_safecrop", + "fnet2d_segauxself", + "fcmae_vscyto2d_scratch_segauxself", + "pix2pix2d_unetvit_segauxself", + "pix2pix2d_unetvit_last", + "fcmae_vscyto2d_scratch_l1segaux", + "fcmae_vscyto2d_scratch_l1seed1", + "fnet2d_segaux_seed1", + "fnet3d_paper_segaux_seed1", + "pix2pix3d_unetvit_v2_seed1", + "pix2pix3d_unetvit_segaux_seed1", + "fcmae_vscyto3d_scratch_v2_seed1", + "fcmae_vscyto3d_scratch_segaux_seed1", + "fnet3d_paper_segaux_halfw", + "fnet3d_paper_segaux_doublew", + "fnet3d_vscyto3daug_v2", + "fnet3d_vscyto3daug_v2_seed1", + "fnet3d_vscyto3daug_segaux", + "fnet3d_vscyto3daug_segaux_seed1", + "fnet3d_vscyto3daug_segaux_sauna", + "fnet3d_vscyto3daug_segaux_cldice", + "fnet3d_vscyto3daug_segaux_halfw", + "fnet3d_vscyto3daug_segaux_doublew", + "fcmae_vscyto3d_scratch_segaux_sauna", + "pix2pix3d_unetvit_segaux_sauna", + "pix2pix3d_unetvit_segaux_sauna_seed1", + "fcmae_vscyto3d_scratch_segaux_cpout", + "fnet3d_paper_histmatch", + "pix2pix3d_unetvit_v2_histmatch", + "fcmae_vscyto3d_scratch_v2_histmatch", + "fnet3d_vscyto3daug_segcons", + "fnet3d_vscyto3daug_segcons_ctrl", + "fcmae_vscyto3d_scratch_segcons", + "fcmae_vscyto3d_scratch_segcons_ctrl", + "pix2pix2d_unetvit_segcons", + "pix2pix2d_unetvit_segcons_ctrl", ) _CELLDIFF_MODELS: tuple[str, ...] = ( + "celldiff_2d_segauxself", + "celldiff_2d_segaux", + "celldiff_2d_cjoint", + "celldiff_2d_ccond", "celldiff_2d_seed1", + "celldiff_2d_bglp", + "celldiff_2d_bgflat", + "celldiff_segaux", + "celldiff_cjoint", + "celldiff_ccond", "celldiff_r2", "celldiff_2d", "celldiff", ) """CellDiff-family model tokens, longest first so prefix matching does not -truncate ``celldiff_r2``/``celldiff_2d`` down to bare ``celldiff``, nor -``celldiff_2d_seed1`` onto ``celldiff_2d`` (which would misread ``seed1`` as a -variant).""" +truncate ``celldiff_r2``/``celldiff_2d`` down to bare ``celldiff``, nor the +Spotlight-v2 arms (``celldiff_2d_segaux``, ``celldiff_segaux``, ...) onto the +baseline whose token they extend (which would misread ``segaux`` as a variant).""" _ORGANELLES: tuple[str, ...] = ("er", "mitochondria", "nucleus", "membrane") # Canonical on-disk organelle roots to walk. The generator keeps ``mitochondria`` @@ -377,6 +507,28 @@ def _match_model_variant(body: str) -> tuple[str, str | None] | None: ) +# Spotlight loss arms (v1 and v2) are registered above so their store dirs parse, +# but they are scored ONLY by tools/generate_spotlight_v2_eval_configs.py into the +# separate _spotlight_v2 root. They share the canonical prediction-store tree, so +# without this skip a canonical regen would fold them into the paper buckets and +# write their eval dirs under the canonical root. Keys are parsed model tokens +# (`celldiff_segaux_iterative` parses to `celldiff_segaux`): the v1 arms, the v2 +# post-hoc controls (histogram-matched baselines, no training leaf) and every arm +# the v2 leaf generator emits. +_SPOTLIGHT_ARM_MODELS: frozenset[str] = frozenset( + { + "fnet3d_spotlight", + "fnet2d_spotlight", + "pix2pix3d_unetvit_spotlight", + "pix2pix2d_unetvit_spotlight", + "fnet3d_paper_histmatch", + "pix2pix3d_unetvit_v2_histmatch", + "fcmae_vscyto3d_scratch_v2_histmatch", + } + | {arm.model for arm in ARMS} +) + + # Other campaigns' model dirs in the canonical tree that paths.PAPER_KEY does not know, # so is_foreign_model_dir cannot recognise them from it. Named one by one; an unknown dir # still raises. @@ -484,7 +636,8 @@ def walk_predictions( Iterates ``///[__]/prediction.zarr`` for ``er, mito, nucleus, membrane`` and parses each into a :class:`ParsedZarr`. - Drops R1 CellDiff (``model`` in :data:`_SKIP_MODELS`). The canonical layout + Drops R1 CellDiff (``model`` in :data:`_SKIP_MODELS`) and the Spotlight loss + arms (:data:`_SPOTLIGHT_ARM_MODELS`, scored in their own root). The canonical layout guarantees exactly one prediction.zarr per identity, so a duplicate ``canonical_identity`` is a layout violation and raises (never silently prefers one). The legacy ``{predictions,joint_predictions}`` dirs are NOT @@ -523,7 +676,7 @@ def walk_predictions( n_skipped[reason] += 1 continue parsed = parse_zarr_name(zarr_path, dynacell_root=dynacell_root) - if parsed.model in _SKIP_MODELS: + if parsed.model in _SKIP_MODELS or parsed.model in _SPOTLIGHT_ARM_MODELS: continue existing = by_identity.get(parsed.canonical_identity) if existing is not None: diff --git a/applications/dynacell/tools/generate_grouped_eval_configs_test.py b/applications/dynacell/tools/generate_grouped_eval_configs_test.py index b1de35bc5..ab1896449 100644 --- a/applications/dynacell/tools/generate_grouped_eval_configs_test.py +++ b/applications/dynacell/tools/generate_grouped_eval_configs_test.py @@ -392,6 +392,16 @@ def test_walk_predictions_skips_out_of_scope_test_sets(tmp_path: Path) -> None: assert [p.test_set for p in pool] == ["a549"] +def test_walk_predictions_skips_spotlight_arms(tmp_path: Path) -> None: + """Spotlight arm stores share the canonical tree but never enter the paper buckets.""" + _touch_prediction(tmp_path, "nucleus", "fnet2d", "ipsc", "ipsc") + _touch_prediction(tmp_path, "nucleus", "fnet2d_segaux", "ipsc", "ipsc") + _touch_prediction(tmp_path, "nucleus", "celldiff_segaux_iterative", "ipsc", "ipsc") + _touch_prediction(tmp_path, "nucleus", "pix2pix2d_unetvit_last", "ipsc", "a549__mock") + + assert [p.model for p in walk_predictions(tmp_path)] == ["fnet2d"] + + def test_walk_predictions_skips_paper_key_models_it_does_not_register( tmp_path: Path, capsys: pytest.CaptureFixture[str], monkeypatch: pytest.MonkeyPatch ) -> None: diff --git a/applications/dynacell/tools/generate_spotlight_v2_eval_configs.py b/applications/dynacell/tools/generate_spotlight_v2_eval_configs.py new file mode 100644 index 000000000..d66943918 --- /dev/null +++ b/applications/dynacell/tools/generate_spotlight_v2_eval_configs.py @@ -0,0 +1,340 @@ +#!/usr/bin/env python3 +"""Generate the Spotlight-v2 grouped eval buckets from a roster. + +Spotlight v2 scores every iPSC-trained baseline and Spotlight arm under ONE eval +pin, into a root that the paper never reads. Isolation is by root, as for +DynaCell-lite: ``save.save_dir`` and ``io.pred_cache_dir`` use the unchanged +canonical grammar (:func:`paths.eval_leaf`, :func:`paths.pred_cache_dir`) with +``data_root=V2_ROOT``:: + + V2_ROOT///ipsc/[__]/ save_dir + V2_ROOT//eval_cache_pred///ipsc// pred cache + +The GT feature caches are SHARED with the canonical buckets (``io.gt_cache_dir`` +comes from the dataset manifest, untouched here). They depend only on the GT and +are keyed by ``(gene_cond, focus_slab.halfwidth)``; these leaves inherit the +``eval.yaml`` halfwidth exactly like every canonical nucleus/membrane bucket, so +they read the same key rather than flipping it. + +ER and mito buckets are built by the same :func:`build_leaf_yaml` as the canonical +``er_*`` / ``mitochondria_*`` grouped leaves, so they score exactly like them: +the default semantic (Dice) masks, no ``segmentation`` override and no instance +AP, GT from the per-organelle iPSC stores (``SEC61B.zarr`` / ``TOMM20.zarr``) and +the A549 ``sec61b`` / ``tomm20`` test sets. Roster keys are the on-disk +organelle tokens (``er``, ``mito``); mito's eval ``target_name`` is +``mitochondria``, as in the canonical leaves. + +Every pred-side artifact is force-recomputed (masks, instances, CP and all deep +features) plus ``final_metrics``. The generator predates the per-position +prediction sources the eval caches now record, and forcing keeps these waves +independent of that check: later waves add stores (post-hoc clipped predictions) +whose pixels must never be served from an earlier cache. ``gt_*`` stays cached. + +Buckets are keyed by ``(wave, organelle, test leaf)`` and named +``spotlight_v2____``. A wave is a set of models scored +together; add new arms (``_segaux``, seed replicates, a retrained baseline, +clipped stores) as a NEW wave so re-running it never re-scores, and overwrites, +the conditions of an earlier wave. A ``(organelle, model, leaf)`` may appear in +only one wave. + +Model tokens must be ``paths.PAPER_KEY`` keys (condition names use the paper +key). By default each model's store is the canonical +``paths.prediction_store(organelle, model, "ipsc", ...)``; a roster entry may give +``pred_paths: {: }`` for stores outside that grammar. + +Every store is gated before anything is written: its position set must equal +the GT test store's, each position's T/Z/Y/X must match the GT, and every array +must hold ``prod(ceil(shape / chunks))`` chunk files. ``pred_path.is_dir()`` (the +grouped generator's only check) passes on a half-written store. + +Usage:: + + uv run --no-sync python applications/dynacell/tools/generate_spotlight_v2_eval_configs.py --dry-run + uv run --no-sync python applications/dynacell/tools/generate_spotlight_v2_eval_configs.py + uv run --no-sync python applications/dynacell/tools/generate_spotlight_v2_eval_configs.py --wave wave1a +""" + +from __future__ import annotations + +import argparse +import json +import math +import os +import sys +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path + +import yaml +from generate_grouped_eval_configs import ( + _CANONICAL_ORG_TO_INTERNAL, + _HYDRA_HEADER, + _LEAF_OUT_ROOT, + _MANIFEST_ROOT, + ParsedZarr, + benchmark_dataset_ref, + build_leaf_yaml, + condition_name, +) + +from dynacell.evaluation import paths + +V2_ROOT = paths.DATA_ROOT / "_spotlight_v2" +DEFAULT_ROSTER = Path(__file__).resolve().parent / "spotlight_v2_eval_roster.yaml" +BUCKET_PREFIX = "spotlight_v2_" +TRAIN_SET = "ipsc" +_TRAIN_BUCKET = "ipsc_trained" +# On-disk organelle tokens (the roster keys and prediction-store dirs). +ORGANELLES: frozenset[str] = frozenset({"nucleus", "membrane", "er", "mito"}) +LEAVES: tuple[str, ...] = ("ipsc", "a549__mock", "a549__denv", "a549__zikv") +_GATE_WORKERS = 16 + +# Every pred-side artifact the eval caches (see _resolve_force in +# evaluation/pipeline_cache.py). NOT ``all``: that also forces gt_*. +PRED_FORCE: dict[str, bool] = { + "final_metrics": True, + "pred_masks": True, + "pred_cp": True, + "pred_dinov3": True, + "pred_dynaclr": True, + "pred_celldino": True, + "pred_morphem": True, + "pred_instances": True, +} + + +def split_leaf(leaf: str) -> tuple[str, str | None]: + """Return ``(test_set, condition)`` for a ``[__]`` leaf token.""" + if leaf not in LEAVES: + raise ValueError(f"unknown test leaf {leaf!r}; expected one of {LEAVES}") + test_set, _, condition = leaf.partition("__") + return test_set, condition or None + + +def bucket_name(wave: str, organelle: str, leaf: str) -> str: + """Return the bucket directory name for ``(wave, organelle, leaf)``.""" + return f"{BUCKET_PREFIX}{organelle}_{leaf.replace('__', '_')}__{wave}" + + +def load_roster(path: Path) -> list[tuple[str, str, str, str, Path]]: + """Expand a roster YAML into ``(wave, organelle, model, leaf, pred_path)`` rows. + + Raises + ------ + ValueError + On an unknown organelle/leaf/model or a duplicate ``(organelle, model, leaf)``. + """ + with path.open() as f: + roster = yaml.safe_load(f) + default_leaves = roster["leaves"] + rows: list[tuple[str, str, str, str, Path]] = [] + seen: dict[tuple[str, str, str], str] = {} + for wave, by_organelle in roster["waves"].items(): + for organelle, entries in by_organelle.items(): + if organelle not in ORGANELLES: + raise ValueError(f"wave {wave!r}: organelle {organelle!r} not in {sorted(ORGANELLES)}") + for entry in entries: + if isinstance(entry, str): + entry = {"model": entry} + model = entry["model"] + if model not in paths.PAPER_KEY: + raise ValueError(f"wave {wave!r}: model {model!r} is not a paths.PAPER_KEY key") + overrides = entry.get("pred_paths", {}) + for leaf in entry.get("leaves", default_leaves): + test_set, condition = split_leaf(leaf) + key = (organelle, model, leaf) + if key in seen: + raise ValueError(f"{key} is in wave {seen[key]!r} and wave {wave!r}") + seen[key] = wave + pred = overrides.get(leaf) or paths.prediction_store( + organelle, model, TRAIN_SET, test_set, condition + ) + rows.append((wave, organelle, model, leaf, Path(pred))) + return rows + + +def _array_layout(array_dir: Path) -> tuple[list[int], list[int], Path] | None: + """Return ``(shape, chunks, chunk_root)`` for a zarr v2/v3 array dir, else None.""" + v3 = array_dir / "zarr.json" + if v3.is_file(): + meta = json.loads(v3.read_text()) + if meta.get("node_type") != "array": + return None + encoding = meta.get("chunk_key_encoding", {"name": "default"})["name"] + chunk_root = array_dir / "c" if encoding == "default" else array_dir + return meta["shape"], meta["chunk_grid"]["configuration"]["chunk_shape"], chunk_root + v2 = array_dir / ".zarray" + if v2.is_file(): + meta = json.loads(v2.read_text()) + return meta["shape"], meta["chunks"], array_dir + return None + + +def _count_chunk_files(root: Path) -> int: + """Count files below ``root``, excluding zarr metadata.""" + n = 0 + stack = [root] + while stack: + current = stack.pop() + if not current.is_dir(): + continue + with os.scandir(current) as it: + for entry in it: + if entry.is_dir(follow_symlinks=False): + stack.append(Path(entry.path)) + elif entry.name not in {"zarr.json", ".zarray", ".zattrs", ".zgroup"}: + n += 1 + return n + + +def _positions(store: Path) -> dict[str, Path]: + """Map ``row/col/fov`` to its group dir for an HCS plate store.""" + return { + f"{r.name}/{c.name}/{fov.name}": fov + for r in sorted(p for p in store.iterdir() if p.is_dir()) + for c in sorted(p for p in r.iterdir() if p.is_dir()) + for fov in sorted(p for p in c.iterdir() if p.is_dir()) + } + + +def store_problems(pred_path: Path, gt_store: Path) -> list[str]: + """Return why ``pred_path`` is not a complete prediction of ``gt_store`` (empty = complete). + + Checks the position set against the GT test store, each position's full-res + ``(T, Z, Y, X)`` against the GT's (channels differ by design), and every + array's chunk-file count against ``prod(ceil(shape / chunks))``. + """ + if not pred_path.is_dir(): + return [f"missing store {pred_path}"] + pred_pos = _positions(pred_path) + gt_pos = _positions(gt_store) + problems: list[str] = [] + if set(pred_pos) != set(gt_pos): + missing = sorted(set(gt_pos) - set(pred_pos)) + extra = sorted(set(pred_pos) - set(gt_pos)) + problems.append(f"position set differs from {gt_store}: missing {missing[:3]} extra {extra[:3]}") + for name, group in pred_pos.items(): + arrays = [(a.name, layout) for a in sorted(group.iterdir()) if (layout := _array_layout(a)) is not None] + if not arrays: + problems.append(f"{name}: no arrays") + continue + for array_name, (shape, chunks, chunk_root) in arrays: + expected = math.prod(math.ceil(s / c) for s, c in zip(shape, chunks)) + found = _count_chunk_files(chunk_root) + if found != expected: + problems.append(f"{name}/{array_name}: {found}/{expected} chunk files") + gt_layout = _array_layout(gt_pos[name] / "0") if name in gt_pos else None + full_res = dict(arrays).get("0") + if gt_layout is not None and full_res is not None: + pred_tzyx = (full_res[0][0], *full_res[0][2:]) + gt_tzyx = (gt_layout[0][0], *gt_layout[0][2:]) + if pred_tzyx != gt_tzyx: + problems.append(f"{name}: TZYX {pred_tzyx} != GT {gt_tzyx}") + return problems + + +def gt_test_store(parsed: ParsedZarr) -> Path: + """Return the GT test store the eval compares ``parsed`` against (from its manifest).""" + ref = benchmark_dataset_ref(parsed) + with (_MANIFEST_ROOT / ref["dataset"] / "manifest.yaml").open() as f: + manifest = yaml.safe_load(f) + return Path(manifest["targets"][ref["target"]]["stores"]["test"]) + + +def target_name(organelle: str) -> str: + """Return the eval ``target_name`` for a roster organelle (``mito`` -> ``mitochondria``).""" + return _CANONICAL_ORG_TO_INTERNAL.get(organelle, organelle) + + +def parsed_row(organelle: str, model: str, leaf: str, pred_path: Path) -> ParsedZarr: + """Build the generator's :class:`ParsedZarr` for one roster row.""" + test_set, condition = split_leaf(leaf) + return ParsedZarr( + pred_path=pred_path, + organelle=target_name(organelle), + model=model, + variant=None, + train_set=_TRAIN_BUCKET, + train_set_canonical=TRAIN_SET, + test_set=test_set, + condition=condition, + ) + + +def build_buckets(rows: list[tuple[str, str, str, str, Path]], v2_root: Path = V2_ROOT) -> dict[str, tuple[dict, int]]: + """Return ``{bucket_name: (leaf_body, n_conditions)}`` for the roster rows.""" + grouped: dict[str, tuple[str, list[ParsedZarr]]] = {} + for wave, organelle, model, leaf, pred_path in rows: + name = bucket_name(wave, organelle, leaf) + grouped.setdefault(name, (organelle, []))[1].append(parsed_row(organelle, model, leaf, pred_path)) + buckets: dict[str, tuple[dict, int]] = {} + for name, (organelle, members) in sorted(grouped.items()): + body = build_leaf_yaml(target_name(organelle), _TRAIN_BUCKET, members, dynacell_root=v2_root) + # Replace, never mutate: build_leaf_yaml shallow-copies the generator's + # module-level overlay, so this dict is shared with every other leaf. + body["force_recompute"] = dict(PRED_FORCE) + buckets[name] = (body, len(members)) + return buckets + + +def leaf_text(name: str, body: dict, n: int, roster: Path) -> str: + """Render one bucket leaf with its provenance comment.""" + comment = ( + f"# Spotlight-v2 bucket {name} ({n} conditions). Auto-generated by\n" + f"# tools/generate_spotlight_v2_eval_configs.py from {roster.name}; edit the roster, not this file.\n" + f"# save_dir / pred_cache_dir live under {V2_ROOT}\n" + "# (never the canonical dirs the paper reads); the GT caches are the shared manifest\n" + "# ones. Every pred_* artifact is forced.\n" + ) + return _HYDRA_HEADER + comment + yaml.safe_dump(body, default_flow_style=False, sort_keys=False) + + +def main(argv: list[str] | None = None) -> int: + """Gate every roster store, then write one grouped leaf per bucket.""" + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--roster", type=Path, default=DEFAULT_ROSTER, help="roster YAML (default: %(default)s)") + ap.add_argument("--out-root", type=Path, default=_LEAF_OUT_ROOT, help="leaf root (default: %(default)s)") + ap.add_argument("--dry-run", action="store_true", help="gate stores and print buckets; write nothing") + ap.add_argument( + "--wave", + action="append", + help="gate and write only this wave (repeatable; default: every wave). Waves whose stores " + "are still being predicted would otherwise fail the gate for the whole roster.", + ) + args = ap.parse_args(argv) + + # Load the whole roster so the one-wave-per-condition check still spans every wave. + rows = load_roster(args.roster) + if args.wave: + unknown = set(args.wave) - {row[0] for row in rows} + if unknown: + raise ValueError(f"--wave {sorted(unknown)} not in roster {args.roster}") + rows = [row for row in rows if row[0] in args.wave] + parsed_rows = [parsed_row(organelle, model, leaf, pred) for _, organelle, model, leaf, pred in rows] + # Listing ~5k chunk files per store is NFS-latency bound; threads overlap it. + with ThreadPoolExecutor(_GATE_WORKERS) as pool: + all_problems = list(pool.map(lambda p: store_problems(p.pred_path, gt_test_store(p)), parsed_rows)) + failures: list[str] = [] + for parsed, problems in zip(parsed_rows, all_problems): + pred_path = parsed.pred_path + status = "OK " if not problems else "FAIL" + print(f"[gate] {status} {condition_name(parsed)} {pred_path}") + failures += [f"{pred_path}: {p}" for p in problems] + if failures: + print("[gate] incomplete prediction stores:", file=sys.stderr) + for failure in failures: + print(f" - {failure}", file=sys.stderr) + return 1 + + buckets = build_buckets(rows) + for name, (body, n) in buckets.items(): + out = args.out_root / name / "eval_grouped.yaml" + print(f"[gen] {name}: {n} conditions -> {out}") + if not args.dry_run: + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(leaf_text(name, body, n, args.roster)) + print(f"[gen] {len(rows)} conditions in {len(buckets)} buckets{' (dry run)' if args.dry_run else ''}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/applications/dynacell/tools/generate_spotlight_v2_eval_configs_test.py b/applications/dynacell/tools/generate_spotlight_v2_eval_configs_test.py new file mode 100644 index 000000000..959cd9917 --- /dev/null +++ b/applications/dynacell/tools/generate_spotlight_v2_eval_configs_test.py @@ -0,0 +1,218 @@ +"""Tests for ``generate_spotlight_v2_eval_configs.py``.""" + +from __future__ import annotations + +from pathlib import Path + +import generate_spotlight_v2_eval_configs +import numpy as np +import pytest +import yaml +from generate_grouped_eval_configs import _BASE_OVERLAY, _LEAF_OUT_ROOT +from generate_spotlight_v2_eval_configs import ( + DEFAULT_ROSTER, + PRED_FORCE, + V2_ROOT, + build_buckets, + gt_test_store, + load_roster, + main, + parsed_row, + store_problems, +) +from iohub.ngff import open_ome_zarr + +from dynacell.evaluation import paths + + +def _write_roster(tmp_path: Path, waves: dict, leaves: list[str] | None = None) -> Path: + roster = tmp_path / "roster.yaml" + roster.write_text(yaml.safe_dump({"leaves": leaves or ["ipsc", "a549__mock"], "waves": waves})) + return roster + + +def _write_plate(path: Path, positions: list[tuple[str, str, str]], shape: tuple[int, ...]) -> None: + with open_ome_zarr(path, layout="hcs", mode="w", channel_names=["ch"], version="0.5") as plate: + for row, col, fov in positions: + pos = plate.create_position(row, col, fov) + pos.create_image("0", np.ones(shape, dtype=np.float32), chunks=(1, 1, 1, *shape[3:])) + + +def test_default_roster_rows_and_bucket_layout() -> None: + """The stage-0 wave expands to 96 rows in 8 buckets of 12 conditions (later waves are separate).""" + rows = [row for row in load_roster(DEFAULT_ROSTER) if row[0] == "stage0"] + # 12 models x 2 organelles x 4 test legs, one bucket per (wave, organelle, leaf). + assert len(rows) == 96 + buckets = build_buckets(rows) + assert sorted(buckets) == sorted( + f"spotlight_v2_{org}_{leaf}__stage0" + for org in ("nucleus", "membrane") + for leaf in ("ipsc", "a549_mock", "a549_denv", "a549_zikv") + ) + assert {n for _, n in buckets.values()} == {12} + + +def test_outputs_go_to_the_v2_root_and_gt_cache_is_left_to_the_manifest() -> None: + """save_dir and pred_cache_dir are rebased onto V2_ROOT; the GT cache is not overridden.""" + buckets = build_buckets(load_roster(DEFAULT_ROSTER)) + body, _ = buckets["spotlight_v2_membrane_a549_mock__stage0"] + cond = next(c for c in body["conditions"] if c["name"] == "fnet2d_spotlight__ipsc_trained__a549_mock") + assert cond["io"]["pred_path"] == str( + paths.prediction_store("membrane", "fnet2d_spotlight", "ipsc", "a549", "mock") + ) + assert cond["save"]["save_dir"] == str(V2_ROOT / "membrane/fnet2d_spotlight/ipsc/a549__mock") + cache = V2_ROOT / "a549/eval_cache_pred/membrane/fnet2d_spotlight/ipsc/a549__mock" + assert cond["io"]["pred_cache_dir"] == str(cache) + assert "gt_cache_dir" not in cond["io"] + # The whole-cell watershed still seeds from the separate A549 H2B store. + assert cond["io"]["nuclei_gt_path"].endswith("dual_nucl_memb_mock.zarr") + for body, _ in buckets.values(): + for c in body["conditions"]: + assert Path(c["save"]["save_dir"]).is_relative_to(V2_ROOT) + assert Path(c["io"]["pred_cache_dir"]).is_relative_to(V2_ROOT) + + +def test_every_pred_artifact_is_forced_without_touching_the_shared_overlay() -> None: + """Every pred_* flag is forced, no gt_* flag is, and the generator overlay is untouched.""" + buckets = build_buckets(load_roster(DEFAULT_ROSTER)) + for body, _ in buckets.values(): + assert body["force_recompute"] == PRED_FORCE + assert not any(k.startswith("gt_") or k == "all" for k in body["force_recompute"]) + if body["target_name"] in {"nucleus", "membrane"}: + assert body["compute_instance_ap"] is True + assert body["segmentation"]["backend"] == "cpdino" + assert _BASE_OVERLAY["force_recompute"] == {"final_metrics": True} + + +def test_pred_path_override_and_leaf_narrowing(tmp_path: Path) -> None: + """A roster entry can narrow its test legs and point at a non-canonical store.""" + store = tmp_path / "clipped.zarr" + roster = _write_roster( + tmp_path, + {"w1": {"nucleus": [{"model": "fnet2d", "leaves": ["ipsc"], "pred_paths": {"ipsc": str(store)}}]}}, + ) + assert load_roster(roster) == [("w1", "nucleus", "fnet2d", "ipsc", store)] + + +@pytest.mark.parametrize( + ("waves", "match"), + [ + ({"a": {"nucleus": ["fnet2d"]}, "b": {"nucleus": ["fnet2d"]}}, "is in wave 'a' and wave 'b'"), + # Roster keys are the on-disk tokens: ``mito``, never the eval target ``mitochondria``. + ({"a": {"mitochondria": ["fnet2d"]}}, "organelle 'mitochondria'"), + ({"a": {"nucleus": ["not_a_model"]}}, "PAPER_KEY"), + ], +) +def test_roster_rejects(tmp_path: Path, waves: dict, match: str) -> None: + """Duplicate conditions across waves, out-of-scope organelles and unknown models raise.""" + with pytest.raises(ValueError, match=match): + load_roster(_write_roster(tmp_path, waves)) + + +def test_store_problems_catches_missing_positions_chunks_and_shape(tmp_path: Path) -> None: + """The gate passes a complete store and names each kind of incompleteness.""" + gt = tmp_path / "gt.zarr" + positions = [("A", "1", "0"), ("A", "1", "1")] + _write_plate(gt, positions, (2, 1, 3, 8, 8)) + + complete = tmp_path / "complete.zarr" + _write_plate(complete, positions, (2, 1, 3, 8, 8)) + assert store_problems(complete, gt) == [] + + missing_fov = tmp_path / "missing_fov.zarr" + _write_plate(missing_fov, positions[:1], (2, 1, 3, 8, 8)) + assert any("position set differs" in p for p in store_problems(missing_fov, gt)) + + wrong_z = tmp_path / "wrong_z.zarr" + _write_plate(wrong_z, positions, (2, 1, 2, 8, 8)) + assert any("TZYX" in p for p in store_problems(wrong_z, gt)) + + truncated = tmp_path / "truncated.zarr" + _write_plate(truncated, positions, (2, 1, 3, 8, 8)) + chunk = sorted(p for p in (truncated / "A/1/1/0/c").rglob("*") if p.is_file())[-1] + chunk.unlink() + assert store_problems(truncated, gt) == ["A/1/1/0: 5/6 chunk files"] + + assert store_problems(tmp_path / "absent.zarr", gt) == [f"missing store {tmp_path / 'absent.zarr'}"] + + +def test_main_refuses_to_write_when_a_store_is_incomplete(tmp_path: Path) -> None: + """An incomplete store fails the run before any leaf is written.""" + entry = {"model": "fnet2d", "leaves": ["ipsc"], "pred_paths": {"ipsc": str(tmp_path / "x.zarr")}} + roster = _write_roster(tmp_path, {"w1": {"nucleus": [entry]}}) + out = tmp_path / "leaves" + assert main(["--roster", str(roster), "--out-root", str(out)]) == 1 + assert not out.exists() + + +def test_wave_filter_gates_and_writes_only_the_named_wave(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: + """--wave skips an unfinished wave's stores instead of failing on them.""" + gt = tmp_path / "gt.zarr" + _write_plate(gt, [("A", "1", "0")], (1, 1, 3, 8, 8)) + monkeypatch.setattr(generate_spotlight_v2_eval_configs, "gt_test_store", lambda parsed: gt) + done = {"model": "fnet2d", "leaves": ["ipsc"], "pred_paths": {"ipsc": str(gt)}} + pending = {"model": "fnet3d_paper", "leaves": ["ipsc"], "pred_paths": {"ipsc": str(tmp_path / "x.zarr")}} + roster = _write_roster(tmp_path, {"done": {"nucleus": [done]}, "pending": {"nucleus": [pending]}}) + out = tmp_path / "leaves" + assert main(["--roster", str(roster), "--out-root", str(out), "--dry-run"]) == 1 + assert main(["--roster", str(roster), "--out-root", str(out), "--wave", "done"]) == 0 + assert sorted(p.name for p in out.iterdir()) == ["spotlight_v2_nucleus_ipsc__done"] + with pytest.raises(ValueError, match="not in roster"): + main(["--roster", str(roster), "--out-root", str(out), "--wave", "nope"]) + + +# Canonical paper buckets the ER/mito Spotlight-v2 buckets must score like. +_CANONICAL_BUCKET = {"er": "er_ipsc_trained", "mito": "mitochondria_ipsc_trained"} +_LEAF_SUFFIX = {"ipsc": "ipsc", "a549__mock": "a549_mock", "a549__denv": "a549_denv", "a549__zikv": "a549_zikv"} + + +@pytest.mark.parametrize("organelle", ["er", "mito"]) +def test_er_mito_buckets_score_like_the_canonical_grouped_leaf(tmp_path: Path, organelle: str) -> None: + """Every scoring field of an ER/mito bucket equals the canonical ipsc_trained grouped leaf's. + + Only the outputs (save_dir, pred_cache_dir under V2_ROOT), the store and the + condition name may differ, plus force_recompute (every pred_* forced). + """ + leaves = list(_LEAF_SUFFIX) + rows = load_roster(_write_roster(tmp_path, {"w": {organelle: ["fnet3d_vscyto3daug_v2"]}}, leaves)) + buckets = build_buckets(rows) + with (_LEAF_OUT_ROOT / _CANONICAL_BUCKET[organelle] / "eval_grouped.yaml").open() as f: + canonical = yaml.safe_load(f) + for leaf, suffix in _LEAF_SUFFIX.items(): + body, n = buckets[f"spotlight_v2_{organelle}_{suffix}__w"] + assert n == 1 + # Top level: same target, overlay and (absent) segmentation / instance-AP settings. + assert {k: v for k, v in body.items() if k not in {"conditions", "force_recompute"}} == { + k: v for k, v in canonical.items() if k not in {"conditions", "force_recompute"} + } + assert body["target_name"] == {"er": "er", "mito": "mitochondria"}[organelle] + assert "segmentation" not in body and "compute_instance_ap" not in body + assert body["force_recompute"] == PRED_FORCE + (cond,) = body["conditions"] + ref = next(c for c in canonical["conditions"] if c["name"] == f"fnet3d__ipsc_trained__{suffix}") + assert cond["name"] == f"fnet3d_vscyto3daug_v2__ipsc_trained__{suffix}" + assert cond["benchmark"] == ref["benchmark"] + assert set(cond["io"]) == set(ref["io"]) == {"pred_path", "pred_cache_dir"} + test_set, _, condition = leaf.partition("__") + assert cond["io"]["pred_path"] == str( + paths.prediction_store(organelle, "fnet3d_vscyto3daug_v2", "ipsc", test_set, condition or None) + ) + assert cond["save"]["save_dir"] == str(V2_ROOT / organelle / "fnet3d_vscyto3daug_v2/ipsc" / leaf) + assert cond["io"]["pred_cache_dir"] == str( + V2_ROOT / test_set / "eval_cache_pred" / organelle / "fnet3d_vscyto3daug_v2/ipsc" / leaf + ) + + +@pytest.mark.parametrize( + ("organelle", "leaf", "store"), + [ + ("er", "ipsc", "ipsc/dataset_v4/test_cropped/SEC61B.zarr"), + ("mito", "ipsc", "ipsc/dataset_v4/test_cropped/TOMM20.zarr"), + ("er", "a549__denv", "a549/mantis/test/SEC61B_DENV.zarr"), + ("mito", "a549__zikv", "a549/mantis/test/TOMM20_ZIKV.zarr"), + ], +) +def test_er_mito_gate_compares_against_the_per_organelle_gt(organelle: str, leaf: str, store: str) -> None: + """The store gate reads the per-organelle iPSC GT and the A549 sec61b/tomm20 test sets.""" + parsed = parsed_row(organelle, "fnet3d_vscyto3daug_v2", leaf, Path("unused")) + assert gt_test_store(parsed) == paths.DATA_ROOT / store diff --git a/applications/dynacell/tools/generate_spotlight_v2_leaves.py b/applications/dynacell/tools/generate_spotlight_v2_leaves.py new file mode 100644 index 000000000..c49d09571 --- /dev/null +++ b/applications/dynacell/tools/generate_spotlight_v2_leaves.py @@ -0,0 +1,915 @@ +#!/usr/bin/env python3 +"""Generate the Spotlight-v2 first-wave fit and predict leaves from their baselines. + +Plan: ``~/.claude/plans/spotlight-v2.md`` (Stage 0 0b/0c/0g, Stage 1 item 5). Every +arm is a copy of its BASELINE leaf (never of a v1 ``*_spotlight`` leaf) that differs +only in the arm's own change plus the renames that give it its own run dir, wandb +name and job name. :func:`allowed_diff` names both sets per arm, and +:func:`build_leaves` refuses to emit a leaf whose YAML differs from its baseline +anywhere else. + +Arms (``_``): + +- ``segaux`` -- 8 models x nucleus/membrane. Data gains ``fg_mask_key: fg_mask`` + (NOT v1's ``min_nonzero_fraction``, which changes patch sampling); the model gains + ``seg_aux: SegAuxDice(c=0.1)`` and ``seg_aux_weight`` (flow models also + ``seg_aux_t0: 0.7``). ``seg_aux_weight`` comes from SEG_AUX_WEIGHTS, the + per-cell gradient-norm calibration. The base loss, normalization, + sampling, precision, budget and monitored metric are the baseline's, and + ``loss/validate`` stays base-only in all three engines, so ``--ckpt best`` selects + on the baseline's criterion. The CellDiff-3D arm's checkpoints go to + ``celldiff_segaux`` and its stores to ``celldiff_segaux_iterative``, mirroring + the baseline's ``celldiff_r2`` / ``celldiff_r2_iterative`` split. +- ``seed1`` -- noise-floor replicates: ``seed_everything: 1``, nothing else. + The global seed also redraws the FOV split, so the spread is init + split. +- ``v2`` -- fresh baselines retrained on today's code under their own run roots, + for the two 3D models whose existing baseline cannot serve as the control: + ``fcmae_vscyto3d_scratch`` (the April run stopped at ep 111/147 of 200 under an + older MS-SSIM) and ``pix2pix3d_unetvit`` (Run D; the checkpoint-write halt froze + its selectable checkpoints at ep <= 25 of 40, while its S arm will have all 40). + Each model's ``_segaux`` arm is generated from the same baseline leaf in the same + pass, so the arm and its v2 control share one recipe by construction. Also + ``fnet3d_vscyto3daug`` (Phase 15 Arm B; nucleus, then ER and mito for the topology + arms below): vanilla FNet fails out of domain, so the FNet verdict on A549 rests on + this recipe, retrained on today's code. +- UNeXt2-3D wall: ``fcmae_vscyto3d_scratch_{v2,v2_seed1,segaux,segaux_seed1,segaux_sauna,segaux_cpout}`` compose + ``hardware_4gpu_long.yml`` (7 d) instead of ``hardware_4gpu.yml`` (4 d). Measured + from consecutive April checkpoint mtimes of the same 4-GPU recipe (one + allocation each): nucleus e96 00:39:27 -> e98 01:38:24 (2.04 ep/h), e98 -> + e111 08:09:59 (1.99 ep/h); membrane e134 09:21:15 -> e136 10:21:36 (1.99 ep/h), + e146 15:52:49 -> e147 16:22:49 (2.00 ep/h), all 2026-04-30. 200 epochs from + scratch at ~2.0 ep/h is ~100 h > 96 h, and 1.68x inside 168 h. +- ``jointsteps`` / ``l1`` / ``safecrop`` -- UNeXt2-2D membrane recipe probes for the + failed baseline fit (train loss plateau at 0.50). ``jointsteps``: ``max_epochs: + 320`` so the step budget equals the joint membrane run's. Measured from the + runs' final checkpoints: iPSC ``latest-epoch=199-step=100000`` (500 steps/epoch, + 100000 steps) vs joint ``latest-epoch=199-step=160000`` (800 steps/epoch, + 160000 steps), i.e. 1.6x, not 2x; 320 x 500 = 160000. Per-step samples are + equal (16) in both. ``l1``: ``MixedLoss(l1_alpha=1, l2_alpha=0, ms_dssim_alpha=0)``. ``safecrop``: + the data overlay's ``gpu_augmentations`` with ``safe_crop_size: [1, 384, 384]`` + and ``safe_crop_coverage: 0.9`` on the affine, as ``pix2pix2d_unetvit`` does. +- ``cjoint`` / ``ccond`` -- Stage 1b CellDiff (2D + 3D, nucleus only for now). + ``cjoint`` generates ``[image, mask]`` as one flow (``net_config.in_channels: 2``, + ``mask_mode: joint``, gated mask Dice with a placeholder ``mask_dice_weight``); + its predict leaves carry the same two model args. ``ccond`` adds the mask as a + second conditioning channel (``net_config.cond_channels: 2``, ``mask_mode: cond``) + seen through ``MaskCorruption`` in training; its predict leaves read the mask + from the same-dim FNet ``_segaux`` store of the same test leg via + ``CondMaskSource`` (``Nuclei_prediction``, thresholded per window at Otsu) and + set no ``fg_mask_key``. +- ``segaux_sauna`` / ``segaux_cldice`` -- Stage 2 #5 on ``fnet3d_vscyto3daug`` nucleus, ER + and mito (``segaux_sauna`` also on the UNeXt2-3D and pix2pix3d membrane arms): the + ``segaux`` recipe with one change to the Dice term (``TOPOLOGY_ARGS``): Dice + sums weighted by the patch mask's SAUNA map, or mixed with soft-clDice. Each carries its + own calibrated ``seg_aux_weight``, since the change rescales the term's gradient. The ER + and mito arms (and their ``segaux`` arm) train on masks from the eval's classical + binarizer, written by ``write_classical_fg_masks.py``. +- ``segaux_cpout`` -- B3b on the UNeXt2-3D membrane arm: the ``segaux`` recipe with a + thin-wall Dice target (``fg_mask_key: fg_mask_cpout``). The mask lives in a derived + training store (:data:`CPOUT_TRAIN_STORE`) that mirrors the iPSC ``cell.zarr`` (same + positions, image arrays symlinked) plus the new array, so the fit leaf disables the + manifest resolver (``dataset_ref: null``) and declares ``data_path`` and both channels + inline, as the 2D focus-slab leaves do. Its predict leaves are the baseline's test sets. + It carries its own calibrated ``seg_aux_weight``. +- ``bglp`` / ``bgflat`` -- Track H on ``celldiff_2d`` nucleus/membrane: data gains + ``fg_mask_key: fg_mask`` and the model ``target_bg_lowpass: BackgroundLowPass`` with the + arm's ``BG_TARGET_ARGS``, a training-only target transform that keeps the target inside + the dilated, feathered foreground and replaces the background by an estimate from + background pixels only: a small-sigma normalized convolution (``bglp``, background high + frequencies removed) or each plane's background mean (``bgflat``, autofluorescence and + illumination removed too). The background stays supervised, unlike a masked loss. + Validation stays raw, so ``--ckpt best`` selects on the baseline's criterion; predict + leaves equal the baseline's. Normalization is the baseline's. +- ``segcons`` / ``segcons_ctrl`` -- P1 of the conditional-generation review + (``experiments/2026-10-15_conditional-generation-review/PROPOSALS.md``), nucleus only, on + FNet-3D vscyto3daug, UNeXt2-3D and pix2pix2d. Both are fine-tunes ("forks") of the + baseline recipe's converged final checkpoint (:data:`FORK_CKPTS`, loaded weights-only + through ``model.init_args.ckpt_path``, so optimizer and schedule start fresh) on a + shortened budget at a lower LR (:data:`FORK_SCHEDULES`). ``segcons`` adds + ``SegConsistencyLoss`` with Cellpose-SAM (``cpsam``) as the frozen segmenter; + ``segcons_ctrl`` is the same fork, steps, LR and seed without it, so the pair is + stage-matched. ``seg_consistency_weight`` is calibrated per arm at the fork checkpoint + (:data:`SEG_CONSISTENCY_WEIGHTS`). Both + predict from ``last.ckpt`` (``--ckpt last``): ``loss/validate`` stays base-only, so a + best-by-val pick would favour the term arm's earliest epoch. + +Leaves are emitted with ``yaml.safe_dump``, so they carry no inline comments: the +recipe rationale stays in the baseline leaf each header names, and the reasons for +each arm's delta live here. Predict leaves name ``last.ckpt`` as a PLACEHOLDER +``ckpt_path`` (``--ckpt best`` resolves the checkpoint directory from it): submit +them with ``--ckpt best`` and re-bake afterwards. + +Usage:: + + python applications/dynacell/tools/generate_spotlight_v2_leaves.py --check + python applications/dynacell/tools/generate_spotlight_v2_leaves.py +""" + +from __future__ import annotations + +import argparse +import copy +import sys +from dataclasses import dataclass, replace +from pathlib import Path +from typing import Any + +import yaml + +BENCHMARKS = Path(__file__).resolve().parents[1] / "configs" / "benchmarks" / "virtual_staining" +MODELS_ROOT = "/hpc/projects/comp.micro/virtual_staining/models/dynacell" +ORGANELLES: tuple[str, ...] = ("nucleus", "membrane") +THIN_ORGANELLES: tuple[str, ...] = ("er", "mito") +POOL = "ipsc_confocal" +A549_PREDICTS: tuple[str, ...] = ( + "predict__a549_mantis_mock.yml", + "predict__a549_mantis_denv.yml", + "predict__a549_mantis_zikv.yml", +) +SEG_AUX_C = 0.1 +SEG_AUX_T0 = 0.7 +# Stage 2 #5 (2026-10-01): the segaux arm with one topology-aware change to its Dice term. +# segaux_sauna weights the Dice sums by |SAUNA "h" map| of the patch mask, which needs the +# physical voxel size (read from the train set's manifest); segaux_cldice mixes in soft-clDice. +# Each is calibrated on its own, like any other arm (SEG_AUX_WEIGHTS). +_IPSC_MANIFEST = Path(__file__).resolve().parents[1] / "src/dynacell/_manifests/aics-hipsc/manifest.yaml" +_IPSC_MANIFEST_DATA = yaml.safe_load(_IPSC_MANIFEST.read_text()) +_IPSC_SPACING = [_IPSC_MANIFEST_DATA["spacing"][k] for k in "zyx"] +TOPOLOGY_ARGS: dict[str, dict[str, Any]] = { + "segaux_sauna": {"weighting": "sauna", "spacing": _IPSC_SPACING}, + # 5 skeleton iterations (the official default is 10): ER/mito tubules are ~1-3 voxels in radius, + # nucleus bodies (~40 px) never skeletonize at either count, and each iteration costs ~0.13 s + # per (8, 1, 32, 384, 384) step on an A40 (10 iterations: 1.37 s vs 0.07 s without clDice). + "segaux_cldice": {"topology": "cldice", "cldice_alpha": 0.5, "cldice_iters": 5}, +} +# seg_aux_weight per (organelle, arm): the median over 20 seeded val batches of +# ||grad base|| / ||grad Dice|| at each BASELINE checkpoint (contrast knee, c=0.1), +# rounded to 2 significant figures, so the Dice term starts with the same gradient +# norm as the usual loss. It varies 0.36-16 even within a family, hence per cell. +# Source: experiments/2026-09-24_spotlight-v2/calibration/summary.csv (w_star_contrast). +SEG_AUX_WEIGHTS: dict[tuple[str, str], float] = { + ("nucleus", "fnet2d_segaux"): 2.9, + ("nucleus", "fnet3d_paper_segaux"): 1.9, + ("nucleus", "fcmae_vscyto2d_scratch_segaux"): 0.73, + ("nucleus", "fcmae_vscyto3d_scratch_segaux"): 0.82, + ("nucleus", "pix2pix2d_unetvit_segaux"): 16.0, + ("nucleus", "pix2pix3d_unetvit_segaux"): 2.5, + ("nucleus", "celldiff_2d_segaux"): 2.5, + ("nucleus", "celldiff_segaux"): 1.4, + ("membrane", "fnet2d_segaux"): 0.63, + ("membrane", "fnet3d_paper_segaux"): 2.2, + ("membrane", "fcmae_vscyto2d_scratch_segaux"): 0.36, + ("membrane", "fcmae_vscyto3d_scratch_segaux"): 0.86, + ("membrane", "pix2pix2d_unetvit_segaux"): 1.2, + ("membrane", "pix2pix3d_unetvit_segaux"): 3.1, + ("membrane", "celldiff_2d_segaux"): 0.58, + ("membrane", "celldiff_segaux"): 1.0, + # UNeXt2-2D membrane on the L1 recipe (the MixedLoss baseline is a failed fit; the l1 + # probe trains, Dice 0.889). Calibrated on the l1 probe's best ckpt: 0.18 [0.15-0.27]. + ("membrane", "fcmae_vscyto2d_scratch_l1segaux"): 0.18, + # Calibrated on the July Phase 15 Arm B best ckpt (epoch=28-step=75400-loss=0.776): 4.5 [2.6-6.7], + # results/nucleus__fnet3d_vscyto3daug__batches.csv (val replay 0.782 vs recorded 0.776). + ("nucleus", "fnet3d_vscyto3daug_segaux"): 4.5, + # Stage 2 #5 arms on the same ckpt and val batches (calibrate_variant.py, micro-batch 2), whose + # plain-Dice row reproduces the 4.5 above (4.51 [2.58-6.72]): SAUNA 5.28 [2.75-8.00], + # clDice at 5 iterations 0.878 [0.636-1.70]. results/nucleus__fnet3d_vscyto3daug__variants.csv. + ("nucleus", "fnet3d_vscyto3daug_segaux_sauna"): 5.3, + ("nucleus", "fnet3d_vscyto3daug_segaux_cldice"): 0.88, + # ER/mito arms, same protocol on the v2 baseline's best ckpt while it was still training (ER + # epoch=28-step=63713, mito epoch=18-step=49400; batch fg_frac .07-.11 from the classical masks). + # results/{er,mito}__fnet3d_vscyto3daug_v2__variants.csv. ER: Dice 0.220 [0.185-0.345], SAUNA 0.211 + # [0.177-0.333], clDice 0.236 [0.196-0.361]. Mito: Dice 0.774 [0.617-0.936], SAUNA 0.661 + # [0.517-0.784], clDice 0.712 [0.547-0.824]. + ("er", "fnet3d_vscyto3daug_segaux"): 0.22, + ("er", "fnet3d_vscyto3daug_segaux_sauna"): 0.21, + ("er", "fnet3d_vscyto3daug_segaux_cldice"): 0.24, + ("mito", "fnet3d_vscyto3daug_segaux"): 0.77, + ("mito", "fnet3d_vscyto3daug_segaux_sauna"): 0.66, + ("mito", "fnet3d_vscyto3daug_segaux_cldice"): 0.71, + # Membrane SAUNA arms (2026-10-10), on the same April baseline ckpts and val batches as their + # segaux weights (calibrate_variant.py; UNeXt2-3D epoch=136-step=42744 micro 2, pix2pix3d + # epoch=25-step=83200 generator_ema micro 1), whose plain-Dice rows reproduce 0.86 and 3.1 + # (0.8609 [0.468-2.214], 3.1044 [2.304-6.118]): SAUNA 0.7450 [0.424-1.813], 2.946 [2.193-5.870]. + # results/membrane__{fcmae_vscyto3d_scratch,pix2pix3d_unetvit}__variants.csv. + ("membrane", "fcmae_vscyto3d_scratch_segaux_sauna"): 0.75, + ("membrane", "pix2pix3d_unetvit_segaux_sauna"): 2.9, + # segaux_cpout (B3b, 2026-10-14): the thin mask changes the Dice term's gradient scale, so it is + # calibrated on its own, on the same ckpt from the derived store (b3b_cpout/calib/), where the + # canonical fg_mask reproduces 0.8609 [0.468-2.214]: fg_mask_cpout 0.5533 [0.397-0.886]. + ("membrane", "fcmae_vscyto3d_scratch_segaux_cpout"): 0.55, +} +# Data mask key per arm suffix; every other fg-mask arm reads ``fg_mask``. +FG_MASK_KEYS: dict[str, str] = {"segaux_cpout": "fg_mask_cpout"} +# segaux_cpout's derived training store: the iPSC dataset_v4 train cell.zarr's positions, image +# arrays symlinked, plus fg_mask_cpout (experiments/2026-09-24_spotlight-v2/b3b_cpout/). +CPOUT_TRAIN_STORE = "/hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_b3b/ipsc/train/cell_cpout.zarr" +# Segaux-family arms that carry their own calibrated seg_aux_weight rather than the segaux arm's. +_OWN_WEIGHT_SUFFIXES: tuple[str, ...] = (*TOPOLOGY_ARGS, "segaux_cpout") +_SEGAUX_FAMILY: tuple[str, ...] = ("segaux", "segauxself", *_OWN_WEIGHT_SUFFIXES) +# C-joint's mask Dice has no baseline to calibrate against (the baseline has no +# mask channel); it borrows the same-dim CellDiff seg-aux weight as a starting point. +MASK_DICE_WEIGHTS: dict[tuple[str, str], float] = { + ("nucleus", "celldiff_2d_cjoint"): 2.5, + ("nucleus", "celldiff_cjoint"): 1.4, +} +# Track H (2026-10-03) BackgroundLowPass args per arm, in pixels, measured on the GT by the H0 +# step (experiments/2026-09-24_spotlight-v2/trackh/: target_op_check2.csv, mask_recall.csv). +# bglp smooths the background (sigma_lp 2 removes 97% of its 1-px power and keeps 99% of its +# low frequencies); r2/f1 leaves 3% of that 1-px power in the ring, r4/f2 12-15%. A nucleus the +# mask misses is only blurred, so the tight ring is safe. bgflat flattens the background to +# each plane's mean, which erases any nucleus the mask misses: r4/f2 for recall (cpdino GT +# nuclei <50% covered, iPSC 1.2% at r4 vs 2.9% at r2). +BG_TARGET_ARGS: dict[str, dict[str, float | int | None]] = { + "bglp": {"sigma_lp": 2.0, "sigma_feather": 1.0, "dilate_radius": 2}, + "bgflat": {"sigma_lp": None, "sigma_feather": 2.0, "dilate_radius": 4}, +} +JOINTSTEPS_MAX_EPOCHS = 320 +# Second draws (see SEED_SOURCES) inherit their source arm's wall. +# The SAUNA arm keeps its segaux source's wall: the membrane segaux fit ran 2.44 ep/h (epoch=125 +# 2026-09-27 13:44:58 -> epoch=154 2026-09-28 01:38:59), 82 h for 200 epochs, and SAUNA cost the +# FNet-3D nucleus fit +7.6% (2-12:01:34 vs 2-07:46:14), ~88 h against the 96 h default. +# The cpout arm is the same segaux recipe on another mask, so the same 2.44 ep/h (82 h) applies. +LONG_WALL_MODELS: frozenset[str] = frozenset( + { + "fcmae_vscyto3d_scratch_v2", + "fcmae_vscyto3d_scratch_segaux", + "fcmae_vscyto3d_scratch_segaux_sauna", + "fcmae_vscyto3d_scratch_segaux_cpout", + } +) +_WALL_4GPU = "launcher_profiles/hardware_4gpu.yml" +_WALL_4GPU_LONG = "launcher_profiles/hardware_4gpu_long.yml" +# P1 segmenter-consistency fine-tunes (2026-10-15): three converged nucleus baselines, each +# forked twice, with and without the term. The fork source is the baseline recipe's final +# checkpoint under its immutable latest-* name (all three runs completed their budget); the +# FNet-3D and UNeXt2-3D forks start from the v2 retrains, the Spotlight-v2 controls on today's code. +SEGCONS_BASELINES: tuple[str, ...] = ("fnet3d_vscyto3daug", "fcmae_vscyto3d_scratch", "pix2pix2d_unetvit") +FORK_CKPTS: dict[tuple[str, str], str] = { + ("nucleus", "fnet3d_vscyto3daug"): f"{MODELS_ROOT}/ipsc/nucleus/fnet3d_vscyto3daug_v2/checkpoints/" + "latest-epoch=76-step=200000.ckpt", + ("nucleus", "fcmae_vscyto3d_scratch"): f"{MODELS_ROOT}/ipsc/nucleus/fcmae_vscyto3d_scratch_v2/checkpoints/" + "latest-epoch=199-step=62400.ckpt", + ("nucleus", "pix2pix2d_unetvit"): f"{MODELS_ROOT}/ipsc/nucleus/pix2pix2d_unetvit/checkpoints/" + "latest-epoch=39-step=20000.ckpt", +} +# Fine-tune budget: 10% of the baseline's (200000 steps, 200 epochs, 40 epochs, read off the fork +# checkpoints' names) at 0.1x its peak LR (FNet-3D keeps its Constant schedule). The WarmupCosine +# families warm up over 5% of the fine-tune's scheduler steps: UNeXt2-3D 20 x 312 = 6240 (62400 +# steps / 200 epochs), pix2pix2d 4 x 250 = 1000 (20000 global steps / 40 epochs, two optimizer +# steps per GAN batch). The scheduler is rebuilt for the fine-tune, so a cosine decays to 0 again. +# pix2pix2d predicts from generator_ema, which starts as the fork's own shadow. At the baseline's +# ema_kimg 10 the fine-tune (1000 G steps x 16 samples: 4 ranks x batch 4) would leave +# 0.5 ** (16000 / 10000) = 33% of the fork-start shadow in it, diluting both arms; ema_kimg 2 +# leaves 0.5 ** (16000 / 2000) = 0.5 ** 8 = 0.4% (decay = 0.5 ** (global batch / (ema_kimg * 1000))). +FORK_SCHEDULES: dict[str, dict[str, dict[str, Any]]] = { + "fnet3d_vscyto3daug": {"trainer": {"max_steps": 20000}, "model": {"lr": 1.0e-4}}, + "fcmae_vscyto3d_scratch": {"trainer": {"max_epochs": 20}, "model": {"lr": 4.0e-5, "warmup_steps": 312}}, + "pix2pix2d_unetvit": { + "trainer": {"max_epochs": 4}, + "model": {"lr_g": 2.0e-5, "lr_d": 2.0e-5, "warmup_steps": 50, "ema_kimg": 2.0}, + }, +} +# S_train from gate G4: cpsam (Kendall tau vs cpdino nucleus Dice/mAP .65/.80, not in the eval +# stack). One slab-MIP pass per sample around the target crop's nuclear-area plane, center +# 240-px crop, which cellpose pads to exactly one 256-px tile, the geometry the G4 bench timed +# (a 256-px crop pads to 272 and runs 2 x 2 tiles, 4x the segmenter compute, measured with +# get_pad_yx); see viscy_utils.losses.seg_consistency. +# Every sample of the batch is scored. The with-gradient pass is checkpointed per tile: without +# it each sample holds ~5.6 GB of activations (G4 H200 bench: 42.9 GB at 8 samples, against the +# FNet-3D fit's ~41 GB), with it ~0.07 GB per sample at ~1.8x the term's time (A40, 2026-10-15). +SEG_CONSISTENCY_ARGS: dict[str, Any] = { + "segmenter": { + "class_path": "dynacell.cellpose_dense.CellposeDense", + "init_args": {"model_name": "cpsam", "checkpoint_tiles": 1}, + }, + "slab_halfwidth": 1, + "crop_size": 240, +} +# seg_consistency_weight per arm: the median over 20 seeded val batches of ||grad base|| / +# ||grad seg_consistency|| at the fork checkpoint, at the leaves' 240-px crop (calibrate_variant.py +# --variants dice segcons --ckpt --tag segcons_crop240, micro-batch 1, A40 2026-10-16), +# 2 significant figures [IQR]: FNet-3D 0.3670 [0.138-0.654], UNeXt2-3D 0.03238 [0.0243-0.0657], +# pix2pix2d 0.1912 [0.0673-0.342]. Source: experiments/2026-09-24_spotlight-v2/calibration/results/ +# nucleus__{fnet3d_vscyto3daug_v2,fcmae_vscyto3d_scratch_v2,pix2pix2d_unetvit}__segcons_crop240{.csv,__meta.json}. +# (The first calibration, at the 4-tile 256-px crop, gave 0.48 / 0.050 / 0.57: results/*__segcons.*.) +# Known limitation, kept for comparability with the segaux weights: the convention is the segaux +# one, so for pix2pix2d the gradients are on generator_ema with base = lambda_l1 * L1 (the +# adversarial term is ignored), and micro-batch gradients are summed to the val batch's mean, not +# averaged over the training batch's composition (per-rank batch, DDP world size). +SEG_CONSISTENCY_WEIGHTS: dict[tuple[str, str], float] = { + ("nucleus", "fnet3d_vscyto3daug_segcons"): 0.37, + ("nucleus", "fcmae_vscyto3d_scratch_segcons"): 0.032, + ("nucleus", "pix2pix2d_unetvit_segcons"): 0.19, +} +_FORK_SUFFIXES: tuple[str, ...] = ("segcons", "segcons_ctrl") +SAFE_CROP_SIZE = [1, 384, 384] +MASK_VELOCITY_WEIGHT = 1.0 +# C-cond predict conditions on the same-dimensionality FNet `_segaux` prediction for the +# same test leg (that predict must be COMPLETE first), thresholded per window. +CCOND_MASK_MODEL: dict[str, str] = {"celldiff_2d": "fnet2d_segaux", "celldiff": "fnet3d_paper_segaux"} +CCOND_MASK_CHANNEL = "Nuclei_prediction" +# Per-window Otsu (2026-09-28), label- and scale-free. The val-tuned fixed thresholds it +# replaced (2D 0.30, Dice 0.774; 3D 0.40) marked 96-98% of A549 pixels foreground, where +# FNet predictions sit on another intensity scale. Otsu: iPSC val Dice 0.769; A549 fg +# fraction 7-9% (2D) / 26-35% (3D) vs 12.5% [4.8-18.6%] for the A549 training masks +# (experiments/2026-09-24_spotlight-v2/ccond_threshold*/). +CCOND_THRESHOLD = "otsu" +SAFE_CROP_COVERAGE = 0.9 +_UNEXT2_2D_DATA_OVERLAY = BENCHMARKS / "_internal/shared/model/data_overlays/fcmae_vscyto2d_fit.yml" + + +SEGAUXSELF_BASELINES: tuple[str, ...] = ("fnet2d", "fcmae_vscyto2d_scratch", "pix2pix2d_unetvit", "celldiff_2d") + + +@dataclass(frozen=True) +class Baseline: + """Where a baseline model's leaves, checkpoints and prediction stores live.""" + + fit_leaf: str + ckpt_dir: str + store_dir: str + ipsc_predict: str + engine: str # "unet" | "gan" | "flow" + # (organelle, leaf names) where an organelle's A549 predict leaves are not A549_PREDICTS. + a549_predict_overrides: tuple[tuple[str, tuple[str, ...]], ...] = () + + def a549_predicts(self, organelle: str) -> tuple[str, ...]: + """Return the baseline's A549 predict leaf names for ``organelle``.""" + return dict(self.a549_predict_overrides).get(organelle, A549_PREDICTS) + + +BASELINES: dict[str, Baseline] = { + "fnet2d": Baseline("train.yml", "fnet2d", "fnet2d", "predict__ipsc_confocal.yml", "unet"), + "fnet3d_paper": Baseline("train.yml", "fnet3d_paper", "fnet3d_paper", "predict__ipsc_confocal.yml", "unet"), + "fcmae_vscyto2d_scratch": Baseline( + "train.yml", "fcmae_vscyto2d_scratch", "fcmae_vscyto2d_scratch", "predict__ipsc_confocal.yml", "unet" + ), + "fcmae_vscyto3d_scratch": Baseline( + "train.yml", "fcmae_vscyto3d_scratch", "fcmae_vscyto3d_scratch", "predict__ipsc_confocal.yml", "unet" + ), + "pix2pix2d_unetvit": Baseline( + "train.yml", "pix2pix2d_unetvit", "pix2pix2d_unetvit", "predict__ipsc_confocal.yml", "gan" + ), + # Run D is train_4gpu_modernized.yml; the sibling train.yml is the stale LSGAN + # overlay (checkpoint hparams: nonsat, lambda_l1=10, lecam_gamma=0.3, ema_kimg=10). + "pix2pix3d_unetvit": Baseline( + "train_4gpu_modernized.yml", "pix2pix3d_unetvit", "pix2pix3d_unetvit", "predict__ipsc_confocal.yml", "gan" + ), + "celldiff_2d": Baseline("train.yml", "celldiff_2d", "celldiff_2d", "predict__ipsc_confocal.yml", "flow"), + "celldiff": Baseline( + "train.yml", "celldiff_r2", "celldiff_r2_iterative", "predict__ipsc_confocal__iterative.yml", "flow" + ), + # Phase 15 Arm B: FNet-3D on a 384^2 patch with the VSCyto3D augmentation stack, the FNet + # that works out of domain (A549 nucleus PCC 0.68 vs 0.04 for fnet3d_paper). The ER and mito + # baseline leaves are never-run templates of the same recipe (Stage 2 #5). + "fnet3d_vscyto3daug": Baseline( + "train.yml", + "fnet3d_vscyto3daug", + "fnet3d_vscyto3daug", + "predict__ipsc_confocal.yml", + "unet", + a549_predict_overrides=( + ("nucleus", tuple(f"predict__a549_mantis_h2b_{c}.yml" for c in ("mock", "denv", "zikv"))), + ), + ), +} + + +@dataclass(frozen=True) +class Arm: + """One (baseline, suffix) arm, emitted for each of ``organelles``.""" + + baseline: str + suffix: str + organelles: tuple[str, ...] + a549: bool + fit: bool = True + + @property + def model(self) -> str: + """The arm's model code key, run-dir token and checkpoint-dir token.""" + return f"{self.baseline}_{self.suffix}" + + @property + def store_dir(self) -> str: + """The arm's prediction-store dir token (``celldiff_r2_iterative`` -> ``celldiff_segaux_iterative``).""" + base = BASELINES[self.baseline] + return base.store_dir.replace(base.ckpt_dir, self.model, 1) + + +ARMS: tuple[Arm, ...] = ( + *(Arm(m, "segaux", ORGANELLES, a549=True) for m in BASELINES if m != "fnet3d_vscyto3daug"), + # Seed replicates predict the A549 legs too: most arm effects are A549-transfer effects, + # and without an A549 seed spread they have no noise floor (readout 2026-09-28). + *( + Arm(m, "seed1", ORGANELLES, a549=True) + for m in ("fnet2d", "fcmae_vscyto2d_scratch", "pix2pix2d_unetvit", "celldiff_2d") + ), + Arm("fnet3d_paper", "seed1", ("nucleus",), a549=True), + Arm("fcmae_vscyto3d_scratch", "v2", ORGANELLES, a549=True), + Arm("pix2pix3d_unetvit", "v2", ORGANELLES, a549=True), + *(Arm("fcmae_vscyto2d_scratch", s, ("membrane",), a549=False) for s in ("jointsteps", "safecrop")), + # The l1 probe won (Dice 0.889 vs 0.380) and is the baseline for l1segaux, so it also predicts A549. + Arm("fcmae_vscyto2d_scratch", "l1", ("membrane",), a549=True), + # The comparison rebuilt on the recipe that trains: the l1 probe is the baseline for these. + Arm("fcmae_vscyto2d_scratch", "l1segaux", ("membrane",), a549=True), + Arm("fcmae_vscyto2d_scratch", "l1seed1", ("membrane",), a549=True), + # Stage 1b, nucleus first: segmentation inside the generative process. + *(Arm(m, s, ("nucleus",), a549=True) for s in ("cjoint", "ccond") for m in ("celldiff_2d", "celldiff")), + # Stage 2 #1: the segaux arm with a self-consistent Dice reference (2D families first). + *(Arm(m, "segauxself", ORGANELLES, a549=True) for m in SEGAUXSELF_BASELINES), + # Predict-only: the pix2pix2d BASELINE's own last.ckpt into a v2-only store. Its canonical + # stores were predicted from a best-by-val checkpoint (nucleus epoch 22, membrane epoch 37), + # while every GAN arm predicts from last.ckpt (recorded EMA val L1 does not track the + # weights), so arm-vs-baseline needs this. + Arm("pix2pix2d_unetvit", "last", ORGANELLES, a549=True, fit=False), + # Second draws where the verdict rests on one run (readout 2026-09-28: on A549 the two FNet + # baseline draws differ by up to 0.39 Dice): the arm itself for the FNet cells whose effect + # holds against both baseline draws, and the pix2pix3d v2 baseline, which had no replicate. + Arm("fnet2d", "segaux_seed1", ORGANELLES, a549=True), + Arm("fnet3d_paper", "segaux_seed1", ("nucleus",), a549=True), + Arm("pix2pix3d_unetvit", "v2_seed1", ORGANELLES, a549=True), + # UNeXt2-3D v2 baseline, drawn per organelle once its segaux verdict came back non-null + # (nucleus, wave2d 2026-09-28: A549 instance Dice +0.029..+0.047, PCC -0.020..-0.025; + # membrane, wave2f 2026-09-29: iPSC mAP +0.128, instance Dice +0.099, PCC +0.027; CIs exclude 0). + Arm("fcmae_vscyto3d_scratch", "v2_seed1", ORGANELLES, a549=True), + # ... and the UNeXt2-3D membrane segaux arm itself, so the one arm that improves every + # in-domain metric gets the full 2x2 (arm draw x baseline draw) on A549, where the + # FNet-2D arm's two draws disagreed (nucleus Dice +0.15..+0.20 vs +0.01..+0.02). + # Nucleus too (2026-09-30): vanilla FNet fails out-of-domain by design, so the A549 verdict + # rests on the families that already work there; their nucleus arms get a second draw. + Arm("fcmae_vscyto3d_scratch", "segaux_seed1", ORGANELLES, a549=True), + # pix2pix3d nucleus segaux on A549: Dice 0.863 -> 0.890, mAP 0.385 -> 0.483, PCC 0.708 -> 0.678. + # Membrane added 2026-10-07: its single draw is one of the few seg gains on both iPSC and + # A549 (final table, interior-only FG), so it gets the replicate the nucleus gate withheld. + Arm("pix2pix3d_unetvit", "segaux_seed1", ORGANELLES, a549=True), + # Loss-weight sweep on the one cell whose effect held against both baseline draws + # (FNet-3D nucleus at w=1.9: A549 Dice +0.21..+0.44, mAP +0.15..+0.22, readout 2026-09-28). + Arm("fnet3d_paper", "segaux_halfw", ("nucleus",), a549=True), + Arm("fnet3d_paper", "segaux_doublew", ("nucleus",), a549=True), + # The FNet-3D verdict on the recipe that works out of domain (vanilla FNet fails there by + # design, so its A549 gains are not evidence): the full 2x2 from the start. v2 retrains the + # July baseline under today's code, selection and predict path, like the other 3D v2s. + *(Arm("fnet3d_vscyto3daug", s, ("nucleus",), a549=True) for s in ("v2", "v2_seed1", "segaux", "segaux_seed1")), + # Stage 2 #5: SAUNA-weighted Dice vs soft-clDice on the same cell, against the 2x2 above. + *(Arm("fnet3d_vscyto3daug", s, ("nucleus",), a549=True) for s in TOPOLOGY_ARGS), + # ... and on the thin organelles the topology terms are meant for. Their training masks come + # from the eval's classical ER/mito segmenter (CLAHE+Otsu fills the ER cytoplasm). The two + # baseline draws need no mask, so they train first; the arms are calibrated on their ckpt. + *(Arm("fnet3d_vscyto3daug", s, THIN_ORGANELLES, a549=True) for s in ("v2", "v2_seed1")), + *(Arm("fnet3d_vscyto3daug", s, THIN_ORGANELLES, a549=True) for s in ("segaux", *TOPOLOGY_ARGS)), + # Second segaux draw on the thin organelles (2026-10-07): their iPSC Dice gain rests on one run. + Arm("fnet3d_vscyto3daug", "segaux_seed1", THIN_ORGANELLES, a549=True), + # Loss-weight sweep on the out-of-domain seg gain (2026-10-10): A549 Dice beats both baseline + # draws on 3/3 legs for both segaux draws at w=4.5, while on fnet3d_paper nucleus both w/2 + # and 2w lost the 1x arm's iPSC mAP gain (final table). + *(Arm("fnet3d_vscyto3daug", s, ("nucleus",), a549=True) for s in ("segaux_halfw", "segaux_doublew")), + # SAUNA-weighted Dice on the two membrane arms whose seg gain holds on iPSC and A549 (2026-10-10): + # on ER it beat plain segaux on A549 FG_PCC on 3/3 legs (+.016/+.008/+.028, CIs > 0). + *(Arm(m, "segaux_sauna", ("membrane",), a549=True) for m in ("fcmae_vscyto3d_scratch", "pix2pix3d_unetvit")), + # Second SAUNA draw on pix2pix3d membrane (2026-10-13): draw 1 passed B1 with an A549 FG_PCC gain + # over both baselines and both segaux draws, which rule R3 does not decide on one draw. + Arm("pix2pix3d_unetvit", "segaux_sauna_seed1", ("membrane",), a549=True), + # B3b (2026-10-14): UNeXt2-3D membrane segaux on a thin-wall Dice target. + Arm("fcmae_vscyto3d_scratch", "segaux_cpout", ("membrane",), a549=True), + # Track H: CellDiff-2D trained on a background-low-passed target (H1; launched as H2). + *(Arm("celldiff_2d", s, ORGANELLES, a549=True) for s in BG_TARGET_ARGS), + # P1 (2026-10-15): segmenter-consistency fine-tunes and their no-term controls, nucleus only. + *(Arm(m, s, ("nucleus",), a549=True) for m in SEGCONS_BASELINES for s in _FORK_SUFFIXES), +) +# Second draws: suffix -> the arm whose recipe it re-draws with seed_everything: 1. +SEED_SOURCES: dict[str, str] = { + "segaux_seed1": "segaux", + "v2_seed1": "v2", + "l1seed1": "l1", + "segaux_sauna_seed1": "segaux_sauna", +} +# Loss-weight sweep arms: the segaux arm's recipe with seg_aux_weight scaled by this factor. +WEIGHT_SCALES: dict[str, float] = {"segaux_halfw": 0.5, "segaux_doublew": 2.0} + + +def _unseeded(arm: Arm) -> Arm: + """Return the arm a second draw re-draws (:data:`SEED_SOURCES`); any other arm unchanged.""" + return replace(arm, suffix=SEED_SOURCES.get(arm.suffix, arm.suffix)) + + +def _long_wall(arm: Arm) -> bool: + return _unseeded(arm).model in LONG_WALL_MODELS + + +_DESCRIPTION: dict[str, str] = { + "segaux": "data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1) + seg_aux_weight (+ seg_aux_t0 for flow)", + "segauxself": "data fg_mask_key: fg_mask; model seg_aux (SegAuxDice c=0.1, label=target) + the segaux " + "arm's seg_aux_weight (+ seg_aux_t0 for flow). One field from the segaux arm: the Dice reference is the " + "target through the same sigmoid, so the term is zero at pred == target", + "seed1": "seed_everything: 1", + "segaux_seed1": "the segaux arm's recipe + seed_everything: 1 (a second draw of the arm)", + "v2_seed1": "seed_everything: 1 (a second draw of the v2 baseline)", + "segaux_sauna": "the segaux arm's recipe + SegAuxDice weighting=sauna (Dice sums weighted by |SAUNA h map| " + "of the patch mask, iPSC voxel size) at its own calibrated seg_aux_weight", + "segaux_sauna_seed1": "the segaux_sauna arm's recipe + seed_everything: 1 (a second draw of the arm)", + "segaux_cpout": "the segaux arm's recipe + data fg_mask_key: fg_mask_cpout, a thin-wall target from cpdino " + "whole-cell outer outlines on the GT membrane within a wall band, canonical mask outside (recipe in " + "experiments/2026-09-24_spotlight-v2/b3b_cpout/cpout_target.py), read from the derived training store " + f"{CPOUT_TRAIN_STORE} (dataset_ref: null, data_path and channels inline) at its own seg_aux_weight", + "segaux_cldice": "the segaux arm's recipe + SegAuxDice topology=cldice (0.5 Dice + 0.5 soft-clDice, 5 " + "skeleton iterations) at its own calibrated seg_aux_weight", + "segaux_halfw": "the segaux arm's recipe with seg_aux_weight x0.5 (loss-weight sweep)", + "segaux_doublew": "the segaux arm's recipe with seg_aux_weight x2 (loss-weight sweep)", + "v2": "nothing (fresh retrain of the baseline recipe under its own run root)", + "jointsteps": f"trainer max_epochs: {JOINTSTEPS_MAX_EPOCHS}. Step budget matched to the joint membrane run, " + "measured from final checkpoints: baseline latest-epoch=199-step=100000 (500 steps/ep), joint " + "latest-epoch=199-step=160000 (800 steps/ep); 320 x 500 = 160000", + "l1": "MixedLoss l1_alpha 1.0 / l2_alpha 0.0 / ms_dssim_alpha 0.0 (L1 only)", + "l1segaux": "the l1 arm's MixedLoss (L1 only) + data fg_mask_key: fg_mask + model seg_aux (SegAuxDice " + "c=0.1) + seg_aux_weight. Its baseline is the l1 probe, from which it differs by the seg-aux term only", + "l1seed1": "the l1 arm's MixedLoss (L1 only) + seed_everything: 1 (noise floor for l1segaux vs l1)", + "safecrop": f"affine safe_crop_size {SAFE_CROP_SIZE} + safe_crop_coverage {SAFE_CROP_COVERAGE}", + "cjoint": "data fg_mask_key: fg_mask; model net_config.in_channels 2, mask_mode joint, mask_dice_weight, " + f"mask_velocity_weight {MASK_VELOCITY_WEIGHT}, seg_aux_t0 {SEG_AUX_T0}", + "ccond": "data fg_mask_key: fg_mask; model net_config.cond_channels 2, mask_mode cond, mask_corruption " + "(MaskCorruption defaults)", + **{ + suffix: "data fg_mask_key: fg_mask; model target_bg_lowpass (BackgroundLowPass " + + ", ".join(f"{k}={v}" for k, v in args.items()) + + "), a training-only target transform; validation and prediction see the raw target" + for suffix, args in BG_TARGET_ARGS.items() + }, + "segcons_ctrl": "fork: model ckpt_path (the converged baseline checkpoint, weights only) + the fine-tune " + "budget and LR of FORK_SCHEDULES; no other change (the no-term control of segcons)", + "segcons": "the segcons_ctrl fork + model seg_consistency (SegConsistencyLoss, Cellpose-SAM cpsam, slab " + "halfwidth 1, 240-px crop (one cellpose tile), per-tile activation checkpointing) + seg_consistency_weight " + "(gradient-norm calibrated at the fork checkpoint)", +} + +# Keys every fit / predict arm renames so it owns its run dir, wandb run and job. +_FIT_RENAMES: frozenset[str] = frozenset( + { + "benchmark.model_name", + "benchmark.experiment_id", + "trainer.logger.init_args.name", + "trainer.logger.init_args.save_dir", + "trainer.callbacks.1.init_args.dirpath", + "launcher.job_name", + "launcher.run_root", + } +) +_PREDICT_RENAMES: frozenset[str] = frozenset( + { + "benchmark.model_name", + "benchmark.experiment_id", + "model.init_args.ckpt_path", + "trainer.callbacks.0.init_args.output_store", + "launcher.job_name", + "launcher.run_root", + } +) + + +def _flatten(node: Any, prefix: str = "") -> dict[str, Any]: + """Flatten nested dicts/lists to ``{"a.b.0.c": leaf}``.""" + if isinstance(node, dict): + items = node.items() + elif isinstance(node, list): + items = enumerate(node) + else: + return {prefix: node} + out: dict[str, Any] = {} + for key, value in items: + out.update(_flatten(value, f"{prefix}.{key}" if prefix else str(key))) + if not out: # empty container + out[prefix] = node + return out + + +def changed_keys(baseline: dict, arm: dict) -> set[str]: + """Return the flattened key paths whose value differs between two leaf dicts.""" + a, b = _flatten(baseline), _flatten(arm) + return {k for k in a.keys() | b.keys() if a.get(k, object()) != b.get(k, object())} + + +def allowed_diff(arm: Arm, kind: str) -> tuple[frozenset[str], frozenset[str]]: + """Return ``(renames, recipe_keys)`` an arm's ``kind`` ("fit"/"predict") leaf may change. + + ``recipe_keys`` entries are prefixes: every flattened key below one is allowed. + """ + if kind == "predict": + if arm.suffix == "cjoint": + return _PREDICT_RENAMES, frozenset({"model.init_args.net_config.in_channels", "model.init_args.mask_mode"}) + if arm.suffix == "ccond": + return _PREDICT_RENAMES, frozenset( + { + "model.init_args.net_config.cond_channels", + "model.init_args.mask_mode", + "model.init_args.cond_mask_source", + } + ) + return _PREDICT_RENAMES, frozenset() + if arm.suffix in SEED_SOURCES: + renames, recipe_keys = allowed_diff(_unseeded(arm), kind) + return renames, recipe_keys | {"seed_everything"} + if arm.suffix in WEIGHT_SCALES: + return allowed_diff(replace(arm, suffix="segaux"), kind) + if arm.suffix == "l1segaux": + renames, l1_keys = allowed_diff(replace(arm, suffix="l1"), kind) + return renames, l1_keys | allowed_diff(replace(arm, suffix="segaux"), kind)[1] + recipe: set[str] = set() + if arm.suffix in _SEGAUX_FAMILY: + recipe |= {"data.init_args.fg_mask_key", "model.init_args.seg_aux", "model.init_args.seg_aux_weight"} + if BASELINES[arm.baseline].engine == "flow": + recipe.add("model.init_args.seg_aux_t0") + if arm.suffix == "segaux_cpout": + recipe |= { + "benchmark.dataset_ref", + "data.init_args.data_path", + "data.init_args.source_channel", + "data.init_args.target_channel", + } + elif arm.suffix == "seed1": + recipe.add("seed_everything") + elif arm.suffix == "jointsteps": + recipe.add("trainer.max_epochs") + elif arm.suffix == "l1": + recipe.add("model.init_args.loss_function") + elif arm.suffix == "safecrop": + recipe.add("data.init_args.gpu_augmentations") + elif arm.suffix == "cjoint": + recipe |= { + "data.init_args.fg_mask_key", + "model.init_args.net_config.in_channels", + "model.init_args.mask_mode", + "model.init_args.mask_dice_weight", + "model.init_args.mask_velocity_weight", + "model.init_args.seg_aux_t0", + } + elif arm.suffix == "ccond": + recipe |= { + "data.init_args.fg_mask_key", + "model.init_args.net_config.cond_channels", + "model.init_args.mask_mode", + "model.init_args.mask_corruption", + } + elif arm.suffix in BG_TARGET_ARGS: + recipe |= {"data.init_args.fg_mask_key", "model.init_args.target_bg_lowpass"} + elif arm.suffix in _FORK_SUFFIXES: + schedule = FORK_SCHEDULES[arm.baseline] + recipe.add("model.init_args.ckpt_path") + recipe |= {f"trainer.{k}" for k in schedule["trainer"]} | {f"model.init_args.{k}" for k in schedule["model"]} + if arm.suffix == "segcons": + recipe |= {"model.init_args.seg_consistency", "model.init_args.seg_consistency_weight"} + if _long_wall(arm): + recipe.add("base") + return _FIT_RENAMES, frozenset(recipe) + + +def _unexpected(keys: set[str], renames: frozenset[str], recipe: frozenset[str]) -> set[str]: + return {k for k in keys if k not in renames and not any(k == r or k.startswith(r + ".") for r in recipe)} + + +def _replace_segment(value: str, old: str, new: str) -> str: + """Replace the path segment ``old`` with ``new`` exactly once in ``value``.""" + parts = value.split("/") + if parts.count(old) != 1: + raise ValueError(f"expected exactly one {old!r} path segment in {value!r}") + return "/".join(new if p == old else p for p in parts) + + +def _safecrop_gpu_augmentations() -> list[dict]: + """Return the UNeXt2-2D data overlay's ``gpu_augmentations`` with a safe-crop affine.""" + augs = copy.deepcopy(yaml.safe_load(_UNEXT2_2D_DATA_OVERLAY.read_text())["data"]["init_args"]["gpu_augmentations"]) + affines = [a for a in augs if a["class_path"].endswith("BatchedRandAffined")] + if len(affines) != 1: + raise ValueError(f"expected one BatchedRandAffined in {_UNEXT2_2D_DATA_OVERLAY}, got {len(affines)}") + affines[0]["init_args"]["safe_crop_size"] = list(SAFE_CROP_SIZE) + affines[0]["init_args"]["safe_crop_coverage"] = SAFE_CROP_COVERAGE + return augs + + +def _apply_recipe(arm: Arm, organelle: str, cfg: dict) -> None: + """Apply the arm's recipe delta to a fit-leaf dict in place.""" + if arm.suffix in SEED_SOURCES: + _apply_recipe(_unseeded(arm), organelle, cfg) + cfg["seed_everything"] = 1 + return + if arm.suffix in WEIGHT_SCALES: + _apply_recipe(replace(arm, suffix="segaux"), organelle, cfg) + cfg["model"]["init_args"]["seg_aux_weight"] *= WEIGHT_SCALES[arm.suffix] + return + if arm.suffix == "l1segaux": + # The l1 recipe plus the segaux terms, at the weight calibrated on the l1 probe. + _apply_recipe(replace(arm, suffix="l1"), organelle, cfg) + _apply_recipe(replace(arm, suffix="segaux"), organelle, cfg) + cfg["model"]["init_args"]["seg_aux_weight"] = SEG_AUX_WEIGHTS[(organelle, arm.model)] + return + data_args = cfg.setdefault("data", {}).setdefault("init_args", {}) + model_args = cfg.setdefault("model", {}).setdefault("init_args", {}) + if arm.suffix in _SEGAUX_FAMILY: + data_args["fg_mask_key"] = FG_MASK_KEYS.get(arm.suffix, "fg_mask") + seg_args: dict[str, Any] = {"c": SEG_AUX_C, **TOPOLOGY_ARGS.get(arm.suffix, {})} + if arm.suffix == "segauxself": + seg_args["label"] = "target" + model_args["seg_aux"] = {"class_path": "viscy_utils.losses.SegAuxDice", "init_args": seg_args} + # segauxself reuses the segaux arm's calibrated weight so the two differ by the label only; + # the topology and cpout arms change the term's gradient scale, so they carry their own. + weight_arm = arm.model if arm.suffix in _OWN_WEIGHT_SUFFIXES else f"{arm.baseline}_segaux" + model_args["seg_aux_weight"] = SEG_AUX_WEIGHTS[(organelle, weight_arm)] + if BASELINES[arm.baseline].engine == "flow": + model_args["seg_aux_t0"] = SEG_AUX_T0 + if arm.suffix == "segaux_cpout": + # The resolver raises on data fields co-declared with a full dataset_ref, so disable it + # and declare the three fields it would splice, channels from the same manifest. + cfg["benchmark"]["dataset_ref"] = None + data_args["data_path"] = CPOUT_TRAIN_STORE + data_args["source_channel"] = _IPSC_MANIFEST_DATA["channels"]["source"] + data_args["target_channel"] = _IPSC_MANIFEST_DATA["targets"][organelle]["target_channel"] + elif arm.suffix == "seed1": + cfg["seed_everything"] = 1 + elif arm.suffix == "jointsteps": + cfg.setdefault("trainer", {})["max_epochs"] = JOINTSTEPS_MAX_EPOCHS + elif arm.suffix == "l1": + model_args["loss_function"] = { + "class_path": "viscy_utils.losses.MixedLoss", + "init_args": {"l1_alpha": 1.0, "l2_alpha": 0.0, "ms_dssim_alpha": 0.0}, + } + elif arm.suffix == "safecrop": + data_args["gpu_augmentations"] = _safecrop_gpu_augmentations() + elif arm.suffix == "cjoint": + data_args["fg_mask_key"] = "fg_mask" + model_args.setdefault("net_config", {})["in_channels"] = 2 + model_args["mask_mode"] = "joint" + model_args["mask_dice_weight"] = MASK_DICE_WEIGHTS[(organelle, arm.model)] + model_args["mask_velocity_weight"] = MASK_VELOCITY_WEIGHT + model_args["seg_aux_t0"] = SEG_AUX_T0 + elif arm.suffix == "ccond": + data_args["fg_mask_key"] = "fg_mask" + model_args.setdefault("net_config", {})["cond_channels"] = 2 + model_args["mask_mode"] = "cond" + model_args["mask_corruption"] = {"class_path": "dynacell.mask_conditioning.MaskCorruption"} + elif arm.suffix in BG_TARGET_ARGS: + data_args["fg_mask_key"] = "fg_mask" + model_args["target_bg_lowpass"] = { + "class_path": "viscy_utils.losses.BackgroundLowPass", + "init_args": dict(BG_TARGET_ARGS[arm.suffix]), + } + elif arm.suffix in _FORK_SUFFIXES: + schedule = FORK_SCHEDULES[arm.baseline] + model_args["ckpt_path"] = FORK_CKPTS[(organelle, arm.baseline)] + model_args.update(schedule["model"]) + cfg.setdefault("trainer", {}).update(schedule["trainer"]) + if arm.suffix == "segcons": + model_args["seg_consistency"] = { + "class_path": "viscy_utils.losses.SegConsistencyLoss", + "init_args": copy.deepcopy(SEG_CONSISTENCY_ARGS), + } + model_args["seg_consistency_weight"] = SEG_CONSISTENCY_WEIGHTS[(organelle, arm.model)] + elif arm.suffix != "v2": + raise ValueError(f"unknown arm suffix {arm.suffix!r}") + # Drop containers the arm did not need (v2/seed1 add no data/model keys). + for key in ("data", "model"): + if cfg[key] == {"init_args": {}}: + del cfg[key] + + +def build_fit(arm: Arm, organelle: str, baseline_cfg: dict) -> dict: + """Return the arm's fit-leaf dict, derived from the baseline fit-leaf dict.""" + base = BASELINES[arm.baseline] + cfg = copy.deepcopy(baseline_cfg) + cfg["benchmark"]["model_name"] = arm.model + cfg["benchmark"]["experiment_id"] = f"{organelle}__{POOL}__{arm.model}" + logger = cfg["trainer"]["logger"]["init_args"] + logger["name"] = f"{logger['name']}_{arm.suffix}" + logger["save_dir"] = _replace_segment(logger["save_dir"], base.ckpt_dir, arm.model) + ckpt_cbs = [cb for cb in cfg["trainer"]["callbacks"] if cb["class_path"].endswith("ModelCheckpoint")] + if len(ckpt_cbs) != 1: + raise ValueError(f"{arm.model}/{organelle}: expected one ModelCheckpoint, got {len(ckpt_cbs)}") + ckpt_cbs[0]["init_args"]["dirpath"] = _replace_segment( + ckpt_cbs[0]["init_args"]["dirpath"], base.ckpt_dir, arm.model + ) + cfg["launcher"]["job_name"] = f"{cfg['launcher']['job_name']}_{arm.suffix}" + cfg["launcher"]["run_root"] = _replace_segment(cfg["launcher"]["run_root"], base.ckpt_dir, arm.model) + _apply_recipe(arm, organelle, cfg) + if _long_wall(arm): + walls = [i for i, entry in enumerate(cfg["base"]) if entry.endswith(_WALL_4GPU)] + if len(walls) != 1: + raise ValueError(f"{arm.model}/{organelle}: expected one {_WALL_4GPU} in base, got {len(walls)}") + cfg["base"][walls[0]] = cfg["base"][walls[0]].replace(_WALL_4GPU, _WALL_4GPU_LONG) + return cfg + + +def build_predict(arm: Arm, organelle: str, baseline_cfg: dict) -> dict: + """Return the arm's predict-leaf dict, derived from the baseline predict-leaf dict.""" + base = BASELINES[arm.baseline] + cfg = copy.deepcopy(baseline_cfg) + bench = cfg["benchmark"] + old = f"__{bench['model_name']}__" + if bench["experiment_id"].count(old) != 1: + raise ValueError(f"expected one {old!r} in experiment_id {bench['experiment_id']!r}") + bench["experiment_id"] = bench["experiment_id"].replace(old, f"__{arm.model}__") + bench["model_name"] = arm.model + ckpt_dir = base.ckpt_dir if not arm.fit else arm.model + cfg["model"]["init_args"]["ckpt_path"] = f"{MODELS_ROOT}/ipsc/{organelle}/{ckpt_dir}/checkpoints/last.ckpt" + writers = [cb for cb in cfg["trainer"]["callbacks"] if cb["class_path"].endswith("HCSPredictionWriter")] + if len(writers) != 1: + raise ValueError(f"{arm.model}/{organelle}: expected one HCSPredictionWriter, got {len(writers)}") + writer = writers[0]["init_args"] + writer["output_store"] = _replace_segment(writer["output_store"], base.store_dir, arm.store_dir) + cfg["launcher"]["job_name"] = f"{cfg['launcher']['job_name']}_{arm.suffix}" + cfg["launcher"]["run_root"] = _replace_segment(cfg["launcher"]["run_root"], base.store_dir, arm.store_dir) + model_args = cfg["model"]["init_args"] + if arm.suffix == "cjoint": + model_args.setdefault("net_config", {})["in_channels"] = 2 + model_args["mask_mode"] = "joint" + elif arm.suffix == "ccond": + model_args.setdefault("net_config", {})["cond_channels"] = 2 + model_args["mask_mode"] = "cond" + mask_store = _replace_segment(writer["output_store"], arm.store_dir, CCOND_MASK_MODEL[arm.baseline]) + model_args["cond_mask_source"] = { + "class_path": "dynacell.mask_conditioning.CondMaskSource", + "init_args": { + "data_path": mask_store, + "channel": CCOND_MASK_CHANNEL, + "threshold": CCOND_THRESHOLD, + }, + } + return cfg + + +def _header(arm: Arm, organelle: str, baseline_leaf: Path, kind: str) -> str: + rel = baseline_leaf.relative_to(BENCHMARKS) + lines = [ + "# GENERATED by applications/dynacell/tools/generate_spotlight_v2_leaves.py -- edit the", + "# generator, not this file (plan: ~/.claude/plans/spotlight-v2.md).", + f"# Spotlight-v2 `{arm.suffix}` arm ({kind}) of the baseline leaf {rel}.", + ] + if kind == "fit": + lines.append(f"# Recipe delta vs that leaf: {_DESCRIPTION[arm.suffix]}.") + if _long_wall(arm): + lines.append( + "# Wall: hardware_4gpu_long (7 d); 200 epochs at the measured ~2.0 ep/h is ~100 h > 4 d" + " (checkpoint-mtime pairs in the generator docstring)." + ) + else: + lines.append("# Inference is identical to the baseline's; only the checkpoint, store and names differ.") + if not arm.fit: + lines.append("# Predict-only arm: the baseline's own last.ckpt, own store; submit with `--ckpt last`.") + elif arm.suffix in _FORK_SUFFIXES: + lines.append("# Fine-tune arm: predict the end of the fine-tune; submit with `--ckpt last`.") + else: + lines.append("# ckpt_path is a PLACEHOLDER (last.ckpt): submit with `--ckpt best`, re-bake afterwards.") + lines.append("# Everything else, and the rationale for it, is the baseline leaf's.") + return "\n".join(lines) + "\n" + + +def _render(cfg: dict, header: str) -> str: + return header + yaml.safe_dump(cfg, default_flow_style=False, sort_keys=False) + + +def build_leaves(benchmarks: Path = BENCHMARKS) -> dict[Path, str]: + """Return ``{leaf_path: text}`` for every arm leaf, each checked against its baseline. + + Raises + ------ + ValueError + If any emitted leaf differs from its baseline outside :func:`allowed_diff`. + """ + out: dict[Path, str] = {} + for arm in ARMS: + base = BASELINES[arm.baseline] + for organelle in arm.organelles: + src_dir = benchmarks / organelle / arm.baseline / POOL + dst_dir = benchmarks / organelle / arm.model / POOL + jobs = [("fit", base.fit_leaf, "train.yml", build_fit)] if arm.fit else [] + predicts = [base.ipsc_predict, *(base.a549_predicts(organelle) if arm.a549 else ())] + jobs += [("predict", name, name, build_predict) for name in predicts] + for kind, src_name, dst_name, build in jobs: + src = src_dir / src_name + baseline_cfg = yaml.safe_load(src.read_text()) + cfg = build(arm, organelle, baseline_cfg) + renames, recipe = allowed_diff(arm, kind) + changed = changed_keys(baseline_cfg, cfg) + if bad := _unexpected(changed, renames, recipe): + raise ValueError(f"{dst_dir / dst_name}: unexpected diff vs {src}: {sorted(bad)}") + if missing := renames - changed: + raise ValueError(f"{dst_dir / dst_name}: rename(s) did not change anything: {sorted(missing)}") + out[dst_dir / dst_name] = _render(cfg, _header(arm, organelle, src, kind)) + return out + + +def main(argv: list[str] | None = None) -> int: + """Write every arm leaf, or with ``--check`` report leaves that differ from disk.""" + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--check", action="store_true", help="write nothing; exit 1 if any leaf on disk differs") + args = ap.parse_args(argv) + leaves = build_leaves() + stale = [p for p, text in leaves.items() if not p.is_file() or p.read_text() != text] + for path in stale: + print(f"{'[stale]' if args.check else '[write]'} {path.relative_to(BENCHMARKS)}") + if not args.check: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(leaves[path]) + print(f"{len(leaves)} leaves, {len(stale)} {'stale' if args.check else 'written'}") + return 1 if args.check and stale else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/applications/dynacell/tools/generate_spotlight_v2_leaves_test.py b/applications/dynacell/tools/generate_spotlight_v2_leaves_test.py new file mode 100644 index 000000000..73bd66fb5 --- /dev/null +++ b/applications/dynacell/tools/generate_spotlight_v2_leaves_test.py @@ -0,0 +1,388 @@ +"""Tests for ``generate_spotlight_v2_leaves.py``.""" + +from __future__ import annotations + +import copy +from collections import Counter +from pathlib import Path + +import pytest +import torch +import yaml +from generate_spotlight_v2_leaves import ( + _FIT_RENAMES, + ARMS, + BASELINES, + BENCHMARKS, + BG_TARGET_ARGS, + FORK_CKPTS, + FORK_SCHEDULES, + ORGANELLES, + POOL, + SEED_SOURCES, + SEG_AUX_WEIGHTS, + SEG_CONSISTENCY_ARGS, + SEG_CONSISTENCY_WEIGHTS, + SEGAUXSELF_BASELINES, + SEGCONS_BASELINES, + WEIGHT_SCALES, + Arm, + _unseeded, + allowed_diff, + build_fit, + build_leaves, + changed_keys, +) +from jsonargparse import ArgumentParser +from lightning.pytorch import LightningModule + +from dynacell._compose_hook import _dynacell_ref_resolver +from dynacell.evaluation.paths import PAPER_KEY, canonical_model_name +from viscy_utils.compose import load_composed_config +from viscy_utils.losses import BackgroundLowPass, SegConsistencyLoss + + +def _suffix(leaf_dir_name: str) -> str: + return next(arm.suffix for arm in ARMS if arm.model == leaf_dir_name) + + +@pytest.fixture(scope="module") +def leaves() -> dict: + """One generation for the whole module (~6-8 s each); tests only read it.""" + return build_leaves() + + +def test_committed_leaves_match_the_generator(leaves: dict) -> None: + """Every generated leaf on disk is byte-identical to a fresh generation.""" + stale = [str(p.relative_to(BENCHMARKS)) for p, t in leaves.items() if not p.is_file() or p.read_text() != t] + assert not stale, f"regenerate with generate_spotlight_v2_leaves.py: {stale}" + + +def test_leaf_counts_per_arm(leaves: dict) -> None: + """Count 87 fits and 350 predicts per arm (fit+predict). + + segaux 19+76, segauxself 8+32, seed1 9+36, v2 7+28, probes 3+6 (l1 adds A549), cjoint/ccond 2+8 each, last 0+8, + l1segaux 1+4, l1seed1 1+4, segaux_seed1 10+40, v2_seed1 7+28, + segaux_halfw 2+8, segaux_doublew 2+8, segaux_sauna 5+20, segaux_sauna_seed1 1+4, segaux_cldice 3+12, + segaux_cpout 1+4, bglp 2+8, bgflat 2+8, segcons 3+12, segcons_ctrl 3+12. + + The jointsteps and safecrop probes are iPSC-only; every other arm also predicts the 3 A549 legs. + """ + fits = Counter(_suffix(p.parent.parent.name) for p in leaves if p.name == "train.yml") + predicts = Counter(_suffix(p.parent.parent.name) for p in leaves if p.name != "train.yml") + assert fits == { + "segaux": 19, + "segauxself": 8, + "seed1": 9, + "v2": 7, + "jointsteps": 1, + "l1": 1, + "safecrop": 1, + "cjoint": 2, + "ccond": 2, + "l1segaux": 1, + "l1seed1": 1, + "segaux_seed1": 10, + "v2_seed1": 7, + "segaux_halfw": 2, + "segaux_doublew": 2, + "segaux_sauna": 5, + "segaux_sauna_seed1": 1, + "segaux_cldice": 3, + "segaux_cpout": 1, + "bglp": 2, + "bgflat": 2, + "segcons": 3, + "segcons_ctrl": 3, + } + assert predicts == { + "segaux": 76, + "segauxself": 32, + "last": 8, + "seed1": 36, + "v2": 28, + "jointsteps": 1, + "l1": 4, + "safecrop": 1, + "cjoint": 8, + "ccond": 8, + "l1segaux": 4, + "l1seed1": 4, + "segaux_seed1": 40, + "v2_seed1": 28, + "segaux_halfw": 8, + "segaux_doublew": 8, + "segaux_sauna": 20, + "segaux_sauna_seed1": 4, + "segaux_cldice": 12, + "segaux_cpout": 4, + "bglp": 8, + "bgflat": 8, + "segcons": 12, + "segcons_ctrl": 12, + } + + +def test_every_arm_token_is_registered_and_does_not_collapse() -> None: + """Each arm's model and store-dir token is its own PAPER_KEY entry, never a baseline's.""" + for arm in ARMS: + for token in {arm.model, arm.store_dir}: + assert token in PAPER_KEY, token + assert canonical_model_name(token) == token + + +@pytest.mark.parametrize( + ("baseline", "suffix", "expected"), + [ + ( + "fnet2d", + "segaux", + {"data.init_args.fg_mask_key", "model.init_args.seg_aux", "model.init_args.seg_aux_weight"}, + ), + ( + "celldiff", + "segaux", + { + "data.init_args.fg_mask_key", + "model.init_args.seg_aux", + "model.init_args.seg_aux_weight", + "model.init_args.seg_aux_t0", + }, + ), + ("fnet2d", "seed1", {"seed_everything"}), + ("fcmae_vscyto3d_scratch", "v2", {"base.5"}), + ("pix2pix3d_unetvit", "v2", set()), + ], +) +def test_recipe_delta_is_only_the_arm_change(baseline: str, suffix: str, expected: set[str]) -> None: + """Beyond the renames, a fit leaf changes exactly the arm's own keys.""" + src = BENCHMARKS / "nucleus" / baseline / POOL / BASELINES[baseline].fit_leaf + base_cfg = yaml.safe_load(src.read_text()) + arm = Arm(baseline, suffix, ("nucleus",), a549=False) + renames, _ = allowed_diff(arm, "fit") + changed = changed_keys(base_cfg, build_fit(arm, "nucleus", base_cfg)) - renames + collapsed = {"model.init_args.seg_aux" if k.startswith("model.init_args.seg_aux.") else k for k in changed} + assert collapsed == expected + + +@pytest.mark.parametrize("baseline", ["fnet2d", "pix2pix3d_unetvit", "celldiff_2d"]) +def test_segaux_composes_with_the_engine_args_and_keeps_the_baseline_recipe(baseline: str) -> None: + """The composed segaux fit adds only the SegAuxDice args; loss and normalization stay the baseline's.""" + arm_leaf = BENCHMARKS / "membrane" / f"{baseline}_segaux" / POOL / "train.yml" + base_leaf = BENCHMARKS / "membrane" / baseline / POOL / BASELINES[baseline].fit_leaf + arm_cfg = load_composed_config(arm_leaf, resolver=_dynacell_ref_resolver) + base_cfg = load_composed_config(base_leaf, resolver=_dynacell_ref_resolver) + args = arm_cfg["model"]["init_args"] + assert args["seg_aux"] == {"class_path": "viscy_utils.losses.SegAuxDice", "init_args": {"c": 0.1}} + assert args["seg_aux_weight"] == SEG_AUX_WEIGHTS[("membrane", f"{baseline}_segaux")] + assert arm_cfg["data"]["init_args"]["fg_mask_key"] == "fg_mask" + assert "min_nonzero_fraction" not in arm_cfg["data"]["init_args"] + for key in ("loss_function", "recon_loss", "lambda_l1", "lecam_gamma", "ema_kimg"): + assert args.get(key) == base_cfg["model"]["init_args"].get(key) + assert arm_cfg["data"]["init_args"]["normalizations"] == base_cfg["data"]["init_args"]["normalizations"] + for key in ("max_epochs", "max_steps", "precision"): + assert arm_cfg["trainer"].get(key) == base_cfg["trainer"].get(key) + + +def test_predict_leaves_point_at_the_arm_checkpoint_and_store(leaves: dict) -> None: + """Predict leaves name the arm's own store dir, never the baseline's, and the arm's own ckpt dir. + + The exception is a predict-only arm (no fit), which reads its baseline's checkpoint dir. + """ + for path, text in leaves.items(): + if path.name == "train.yml": + continue + cfg = yaml.safe_load(text) + model, organelle = path.parent.parent.name, path.parent.parent.parent.name + arm = next(a for a in ARMS if a.model == model) + ckpt_dir = model if arm.fit else BASELINES[arm.baseline].ckpt_dir + assert cfg["model"]["init_args"]["ckpt_path"].endswith(f"/ipsc/{organelle}/{ckpt_dir}/checkpoints/last.ckpt") + store = cfg["trainer"]["callbacks"][0]["init_args"]["output_store"] + assert f"/{organelle}/{arm.store_dir}/ipsc/" in store + assert store.startswith(cfg["launcher"]["run_root"] + "/") + + +def test_ccond_predict_reads_the_same_leg_fnet_segaux_mask(leaves: dict) -> None: + """C-cond predicts condition on the same-dim FNet segaux store of the same test leg, with no fg_mask_key.""" + fnet = {"celldiff_2d_ccond": "fnet2d_segaux", "celldiff_ccond": "fnet3d_paper_segaux"} + n = 0 + for path, text in leaves.items(): + model = path.parent.parent.name + if model not in fnet or path.name == "train.yml": + continue + cfg = yaml.safe_load(text) + store = cfg["trainer"]["callbacks"][0]["init_args"]["output_store"] + source = cfg["model"]["init_args"]["cond_mask_source"]["init_args"] + leg = store.split("/ipsc/", 1)[1] + assert ( + source["data_path"] == f"/hpc/projects/virtual_staining/training/dynacell/nucleus/{fnet[model]}/ipsc/{leg}" + ) + assert source["channel"] == "Nuclei_prediction" + # Per-window Otsu, which transfers across intensity scales (see CCOND_THRESHOLD). + assert source["threshold"] == "otsu" + assert "fg_mask_key" not in cfg.get("data", {}).get("init_args", {}) + n += 1 + assert n == 8 + + +@pytest.mark.parametrize("organelle", ["nucleus", "membrane"]) +@pytest.mark.parametrize("baseline", SEGAUXSELF_BASELINES) +def test_segauxself_differs_from_segaux_by_the_dice_label_only(baseline: str, organelle: str) -> None: + """Composed, the segauxself fit equals the segaux fit except SegAuxDice label and the run identity.""" + load = lambda suffix: load_composed_config( # noqa: E731 + BENCHMARKS / organelle / f"{baseline}_{suffix}" / POOL / "train.yml", resolver=_dynacell_ref_resolver + ) + segaux, segauxself = load("segaux"), load("segauxself") + renames, _ = allowed_diff(Arm(baseline, "segauxself", (organelle,), a549=False), "fit") + assert changed_keys(segaux, segauxself) - renames == {"model.init_args.seg_aux.init_args.label"} + assert segauxself["model"]["init_args"]["seg_aux"]["init_args"]["label"] == "target" + + +def test_last_arm_predicts_the_baselines_own_checkpoint_into_its_own_store(leaves: dict) -> None: + """The predict-only `last` arm reads the baseline's ckpt dir but never writes the baseline's store.""" + last = [p for p in leaves if p.parent.parent.name == "pix2pix2d_unetvit_last"] + assert len(last) == 8 and not any(p.name == "train.yml" for p in last) + for p in last: + cfg = yaml.safe_load(leaves[p]) + assert cfg["model"]["init_args"]["ckpt_path"].endswith("/pix2pix2d_unetvit/checkpoints/last.ckpt") + store = cfg["trainer"]["callbacks"][0]["init_args"]["output_store"] + assert "/pix2pix2d_unetvit_last/" in store and "/pix2pix2d_unetvit/" not in store + + +def test_l1_arms_differ_from_the_l1_probe_by_their_own_term_only() -> None: + """Composed, l1segaux = l1 + the seg-aux keys and l1seed1 = l1 + the seed, nothing else.""" + load = lambda suffix: load_composed_config( # noqa: E731 + BENCHMARKS / "membrane" / f"fcmae_vscyto2d_scratch_{suffix}" / POOL / "train.yml", + resolver=_dynacell_ref_resolver, + ) + l1 = load("l1") + renames, _ = allowed_diff(Arm("fcmae_vscyto2d_scratch", "l1segaux", ("membrane",), a549=False), "fit") + seg = changed_keys(l1, load("l1segaux")) - renames + assert {"model.init_args.seg_aux" if k.startswith("model.init_args.seg_aux.") else k for k in seg} == { + "data.init_args.fg_mask_key", + "model.init_args.seg_aux", + "model.init_args.seg_aux_weight", + } + assert changed_keys(l1, load("l1seed1")) - renames == {"seed_everything"} + + +def test_second_draws_differ_from_their_source_arm_by_the_seed_only(leaves: dict) -> None: + """Second-draw fit leaves equal their source arm's, up to renames and ``seed_everything: 1``.""" + second_draws = [arm for arm in ARMS if arm.suffix in SEED_SOURCES] + assert {arm.suffix for arm in second_draws} == set(SEED_SOURCES) + for arm in second_draws: + for organelle in arm.organelles: + draw = yaml.safe_load(leaves[BENCHMARKS / organelle / arm.model / POOL / "train.yml"]) + src = yaml.safe_load(leaves[BENCHMARKS / organelle / _unseeded(arm).model / POOL / "train.yml"]) + assert draw.pop("seed_everything") == 1 + assert "seed_everything" not in src + assert changed_keys(src, draw) == _FIT_RENAMES + + +def test_weight_sweep_arms_differ_from_the_segaux_arm_by_the_weight_only(leaves: dict) -> None: + """Sweep fit leaves equal the segaux arm's, up to renames and ``seg_aux_weight`` x its scale.""" + sweep = [arm for arm in ARMS if arm.suffix in WEIGHT_SCALES] + assert {arm.suffix for arm in sweep} == {"segaux_halfw", "segaux_doublew"} + for arm in sweep: + for organelle in arm.organelles: + arm_leaf = yaml.safe_load(leaves[BENCHMARKS / organelle / arm.model / POOL / "train.yml"]) + src = yaml.safe_load(leaves[BENCHMARKS / organelle / f"{arm.baseline}_segaux" / POOL / "train.yml"]) + w_arm = arm_leaf["model"]["init_args"].pop("seg_aux_weight") + w_src = src["model"]["init_args"].pop("seg_aux_weight") + assert w_arm == pytest.approx(w_src * WEIGHT_SCALES[arm.suffix]) + assert changed_keys(src, arm_leaf) == _FIT_RENAMES + + +@pytest.mark.parametrize("organelle", ORGANELLES) +@pytest.mark.parametrize("suffix", list(BG_TARGET_ARGS)) +def test_bg_target_arms_compose_and_instantiate_with_only_the_target_op_added(suffix: str, organelle: str) -> None: + """Composed, each Track H fit is celldiff_2d + fg_mask_key + target_bg_lowpass; its model builds.""" + load = lambda model: load_composed_config( # noqa: E731 + BENCHMARKS / organelle / model / POOL / "train.yml", resolver=_dynacell_ref_resolver + ) + base, arm = load("celldiff_2d"), load(f"celldiff_2d_{suffix}") + renames, _ = allowed_diff(Arm("celldiff_2d", suffix, (organelle,), a549=False), "fit") + changed = changed_keys(base, arm) - renames + op_key = "model.init_args.target_bg_lowpass" + assert {op_key if k.startswith(op_key + ".") else k for k in changed} == {"data.init_args.fg_mask_key", op_key} + assert arm["data"]["init_args"]["fg_mask_key"] == "fg_mask" + # LightningModule as the base, as LightningCLI does: test_lazy_init evicts dynacell.* from + # sys.modules, so a DynacellFlowMatching bound at import can differ from the one jsonargparse imports. + parser = ArgumentParser() + parser.add_subclass_arguments(LightningModule, "model") + module = parser.instantiate(parser.parse_object({"model": arm["model"]})).model + assert f"{type(module).__module__}.{type(module).__qualname__}" == "dynacell.engine.DynacellFlowMatching" + op = module.target_bg_lowpass + assert isinstance(op, BackgroundLowPass) + assert {k: getattr(op, k) for k in BG_TARGET_ARGS[suffix]} == BG_TARGET_ARGS[suffix] + assert (op.sigma_lp_z, op.sigma_feather_z, op.dilate_radius_z) == (0.0, 0.0, 0) + + +def _load_nucleus_fit(model: str) -> dict: + return load_composed_config(BENCHMARKS / "nucleus" / model / POOL / "train.yml", resolver=_dynacell_ref_resolver) + + +def _instantiate_model(model_cfg: dict) -> LightningModule: + """Build the model section as LightningCLI does (see the bg-target test for why LightningModule).""" + parser = ArgumentParser() + parser.add_subclass_arguments(LightningModule, "model") + return parser.instantiate(parser.parse_object({"model": model_cfg})).model + + +@pytest.mark.parametrize("baseline", SEGCONS_BASELINES) +def test_segcons_pair_is_one_fork_that_differs_by_the_term_only(baseline: str) -> None: + """Composed: ctrl = baseline + the fork keys; segcons = ctrl + seg_consistency and its weight.""" + base, ctrl, arm = (_load_nucleus_fit(m) for m in (baseline, f"{baseline}_segcons_ctrl", f"{baseline}_segcons")) + renames, _ = allowed_diff(Arm(baseline, "segcons", ("nucleus",), a549=False), "fit") + schedule = FORK_SCHEDULES[baseline] + fork_keys = ( + {"model.init_args.ckpt_path"} + | {f"trainer.{k}" for k in schedule["trainer"]} + | {f"model.init_args.{k}" for k in schedule["model"]} + ) + assert changed_keys(base, ctrl) - renames == fork_keys + term = "model.init_args.seg_consistency" + assert {term if k.startswith(term + ".") else k for k in changed_keys(ctrl, arm) - renames} == { + term, + "model.init_args.seg_consistency_weight", + } + assert ctrl["model"]["init_args"]["ckpt_path"] == FORK_CKPTS[("nucleus", baseline)] + assert arm["model"]["init_args"]["seg_consistency"]["init_args"] == SEG_CONSISTENCY_ARGS + # Same seed, data, loss and precision as the baseline: the pair is stage-matched to it. + for key in ("seed_everything", "data"): + assert arm.get(key) == base.get(key) + assert arm["trainer"]["precision"] == base["trainer"]["precision"] + + +@pytest.mark.parametrize("baseline", SEGCONS_BASELINES) +def test_segcons_ctrl_builds_from_the_real_fork_checkpoint(baseline: str) -> None: + """The fork checkpoint exists and loads strictly into the composed control's model.""" + ckpt = FORK_CKPTS[("nucleus", baseline)] + if not Path(ckpt).is_file(): + pytest.skip(f"fork checkpoint not reachable: {ckpt}") + module = _instantiate_model(_load_nucleus_fit(f"{baseline}_segcons_ctrl")["model"]) + state = torch.load(ckpt, map_location="cpu", weights_only=True, mmap=True)["state_dict"] + loaded = module.state_dict() + assert loaded.keys() == state.keys() + for key, value in state.items(): + assert torch.equal(loaded[key], value), key + + +@pytest.mark.parametrize("baseline", SEGCONS_BASELINES) +def test_segcons_builds_with_its_calibrated_weight(baseline: str) -> None: + """The emitted calibrated weight builds the cpsam term (a null weight is refused: test_seg_consistency_training).""" + cp_models = pytest.importorskip("cellpose.models") + if not (cp_models.MODEL_DIR / "cpsam").is_file(): + pytest.skip("cpsam checkpoint not in cellpose's model directory") + model_cfg = copy.deepcopy(_load_nucleus_fit(f"{baseline}_segcons")["model"]) + weight = SEG_CONSISTENCY_WEIGHTS[("nucleus", f"{baseline}_segcons")] + assert model_cfg["init_args"]["seg_consistency_weight"] == weight + del model_cfg["init_args"]["ckpt_path"] # the strict fork load is covered by the control's test + module = _instantiate_model(model_cfg) + assert module.seg_consistency_weight == weight + term = module.seg_consistency + assert isinstance(term, SegConsistencyLoss) + assert type(term.segmenter).__name__ == "CellposeDense" and term.segmenter.model_name == "cpsam" + assert term.segmenter.checkpoint_tiles == 1 + assert (term.slab_halfwidth, term.crop_size) == (1, 240) + assert not any(k.startswith("seg_consistency") for k in module.state_dict()) diff --git a/applications/dynacell/tools/spotlight_v2_eval_roster.yaml b/applications/dynacell/tools/spotlight_v2_eval_roster.yaml new file mode 100644 index 000000000..3b5ba5013 --- /dev/null +++ b/applications/dynacell/tools/spotlight_v2_eval_roster.yaml @@ -0,0 +1,519 @@ +# Roster for tools/generate_spotlight_v2_eval_configs.py (plan: ~/.claude/plans/spotlight-v2.md). +# One wave = one set of buckets, spotlight_v2____. Append a NEW wave for +# new arms (segaux, seed replicates, fcmae_vscyto3d_scratch_v2, clipped stores) so re-running it +# never re-scores an earlier wave's conditions. Entries are paths.PAPER_KEY model tokens; the +# store defaults to the canonical //ipsc//prediction.zarr. Per entry, +# `leaves: [...]` narrows the test legs and `pred_paths: {: }` points at a +# non-canonical store. +leaves: [ipsc, a549__mock, a549__denv, a549__zikv] +waves: + # Stage 0d/0e: the 8 baselines + the 4 v1 Spotlight arms. fcmae_vscyto3d_scratch is the April + # model (ep 111/200 nucleus, 147/200 membrane), a placeholder until the fresh retrain lands as + # fcmae_vscyto3d_scratch_v2 in a later wave. celldiff_r2_iterative is the celldiff/ipsc_confocal + # leaf (checkpoints under .../celldiff_r2/). + stage0: + nucleus: &stage0_models + - fnet2d + - fnet3d_paper + - fcmae_vscyto2d_scratch + - fcmae_vscyto3d_scratch + - pix2pix2d_unetvit + - pix2pix3d_unetvit + - celldiff_2d + - celldiff_r2_iterative + - fnet2d_spotlight + - fnet3d_spotlight + - pix2pix2d_unetvit_spotlight + - pix2pix3d_unetvit_spotlight + membrane: *stage0_models + # Stage 1, first finished predicts (2026-09-25): pix2pix2d arms, scored ahead of wave1 so they + # do not wait on its slow 3D/CellDiff stores. Generate with --wave wave1a. + wave1a: + nucleus: + - pix2pix2d_unetvit_segaux + - {model: pix2pix2d_unetvit_seed1, leaves: [ipsc]} + membrane: + - {model: pix2pix2d_unetvit_seed1, leaves: [ipsc]} + # The pix2pix2d BASELINE re-predicted from its own last.ckpt (predict-only arm), so GAN + # arm-vs-baseline compares final checkpoints on both sides. Generate with --wave wave1c. + wave1c: + nucleus: [pix2pix2d_unetvit_last] + membrane: [pix2pix2d_unetvit_last] + # Cosmetic-vs-structural control for the 3D nucleus segaux A549 gain (2026-09-29): each v2 + # baseline's prediction histogram-matched per (position, T) volume to its segaux arm's, spatial + # structure kept. Stores written by experiments/2026-09-24_spotlight-v2/histmatch_control.py. + # Generate with --wave ctrl1. + ctrl1: + nucleus: + - model: fnet3d_paper_histmatch + leaves: [a549__mock, a549__denv, a549__zikv] + pred_paths: + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_paper_histmatch/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_paper_histmatch/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_paper_histmatch/ipsc/a549__zikv/prediction.zarr + - model: pix2pix3d_unetvit_v2_histmatch + leaves: [a549__mock, a549__denv, a549__zikv] + pred_paths: + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/pix2pix3d_unetvit_v2_histmatch/ipsc/a549__zikv/prediction.zarr + - model: fcmae_vscyto3d_scratch_v2_histmatch + leaves: [a549__mock, a549__denv, a549__zikv] + pred_paths: + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fcmae_vscyto3d_scratch_v2_histmatch/ipsc/a549__zikv/prediction.zarr + # CELL-Diff A549 legs that finished after wave2g (2026-09-30): the CELL-Diff-2D membrane + # segauxself DENV/MOCK legs, the last CELL-Diff-3D nucleus segaux leg and the first + # CELL-Diff-2D membrane seed1 A549 leg. Generate with --wave wave2j. + wave2j: + nucleus: + - {model: celldiff_segaux_iterative, leaves: [a549__denv]} + membrane: + - {model: celldiff_2d_segauxself, leaves: [a549__mock, a549__denv]} + - {model: celldiff_2d_seed1, leaves: [a549__denv]} + # Second draw of the FNet-3D vscyto3daug MITO segaux arm (fit 37115309, step 200000, --ckpt best + # epoch=18-step=49400), 2026-10-10: all four legs. Its best-val epoch is 44-47 epochs before the + # baselines (62 / 65), so ctrl5 re-predicts it from latest-epoch=76 like draw 1's ctrl3. + # Generate with --wave wave3k. + wave3k: + mito: + - fnet3d_vscyto3daug_segaux_seed1 + # Stage-matched control for wave3k (leaves: experiments/2026-09-24_spotlight-v2/e76_mito_seed1_control/). + # Generate with --wave ctrl5. + ctrl5: + mito: + - model: fnet3d_vscyto3daug_segaux_seed1_e76 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_seed1_e76/ipsc/a549__zikv/prediction.zarr + # Phase B2 FNet-3D vscyto3daug NUCLEUS loss-weight sweep (fits 37200372 / 37200376, max_steps + # 200000, --ckpt best epoch=51-step=135200 for both, inside the baselines' e64 / e74-control range): + # segaux at 0.5x (halfw) and 2x (doublew) seg_aux_weight, all four legs. Generate with --wave wave3n. + wave3n: + nucleus: + - fnet3d_vscyto3daug_segaux_halfw + - fnet3d_vscyto3daug_segaux_doublew + # ... and ctrl6's last leg: cool100 a549__denv (predict 37256146 COMPLETED 2026-10-13). Generate with + # --wave ctrl6b. + ctrl6b: + nucleus: + - model: fnet3d_vscyto3daug_v2_cool100 + leaves: [a549__denv] + pred_paths: + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__denv/prediction.zarr + # Checkpoint-stage control for wave3n's halfw arm (2026-10-13): re-predicted from + # latest-epoch=76-step=200000 instead of its best-val epoch=51 (predicts 37262124/25/45/49), to + # test whether its A549 Dice loss is a checkpoint-stage artifact. Leaves are outside the generated + # tree (experiments/2026-09-24_spotlight-v2/e76_halfw_control/). Generate with --wave ctrl8. + ctrl8: + nucleus: + - model: fnet3d_vscyto3daug_segaux_halfw_e76 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_halfw_e76/ipsc/a549__zikv/prediction.zarr + # Checkpoint-stage control for the nucleus segaux arm (draw 1, best-val epoch=48), 2026-10-14: + # re-predicted from latest-epoch=76-step=200000 to test whether its A549 FG gain is + # checkpoint-stage dependent (ctrl8's halfw lost it by e76). Leaves are outside the generated tree + # (experiments/2026-09-24_spotlight-v2/e76_segaux_nucleus_control/). Its a549__zikv leg follows in + # ctrl9b. Generate with --wave ctrl9. + ctrl9: + nucleus: + - model: fnet3d_vscyto3daug_segaux_e76 + leaves: [ipsc, a549__mock, a549__denv] + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv/prediction.zarr + # ... and ctrl9's last leg: a549__zikv (predicted on the hold, 2026-10-14). Generate with --wave ctrl9b. + ctrl9b: + nucleus: + - model: fnet3d_vscyto3daug_segaux_e76 + leaves: [a549__zikv] + pred_paths: + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv/prediction.zarr + # Fork control (speedup pilot P3, 2026-10-13): UNeXt2-3D membrane segaux_seed1 forked from the + # v2_seed1 baseline's epoch=123 checkpoint (seg_aux_weight patched to 0.86), trained to epoch 199, + # predicted from its best-val epoch=149-step=46800 (full-run segaux_seed1 e164, v2_seed1 e123, v2 + # e178). Stores and leaves are outside the generated tree (experiments/2026-09-24_spotlight-v2/ + # speedup/p3_fork/). Generate with --wave ctrl7. + ctrl7: + membrane: + - model: fcmae_vscyto3d_scratch_segaux_seed1_fork + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/membrane/fcmae_vscyto3d_scratch_segaux_seed1_fork/ipsc/a549__zikv/prediction.zarr + # Training-budget controls (speedup pilot P2, 2026-10-13): the nucleus vscyto3daug v2 baseline + # branched at 38 / 60 / 100% of its 200k constant-LR steps and cooled linearly to zero LR + # (LinearLRCooldown), predicted from each branch's final weights. Stores and leaves are outside + # the generated tree (experiments/2026-09-24_spotlight-v2/speedup/p2_cool/). cool100 a549__denv + # follows in ctrl6b. Generate with --wave ctrl6. + ctrl6: + nucleus: + - model: fnet3d_vscyto3daug_v2_cool38 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool38/ipsc/a549__zikv/prediction.zarr + - model: fnet3d_vscyto3daug_v2_cool60 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool60/ipsc/a549__zikv/prediction.zarr + - model: fnet3d_vscyto3daug_v2_cool100 + leaves: [ipsc, a549__mock, a549__zikv] + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__mock/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_cool100/ipsc/a549__zikv/prediction.zarr + # pix2pix3d MEMBRANE SAUNA arm (Phase B1; fit epoch 39 / step 128000, --ckpt last, EMA, same + # rule as both segaux draws), predicts 37226914/24/28/32 COMPLETED 2026-10-12: all four legs. + # Generate with --wave wave3m. + wave3m: + membrane: + - pix2pix3d_unetvit_segaux_sauna + # ... and its A549 zikv leg (predict 37187258 COMPLETED 2026-10-10 14:0x), the last draw-2 leg. + # Generate with --wave wave3l. + wave3l: + membrane: + - {model: pix2pix3d_unetvit_segaux_seed1, leaves: [a549__zikv]} + # ... its A549 denv leg (predict 37187254 COMPLETED 2026-10-10 ~06:05). Generate with --wave wave3j. + wave3j: + membrane: + - {model: pix2pix3d_unetvit_segaux_seed1, leaves: [a549__denv]} + # pix2pix3d MEMBRANE segaux draw 2 (fit 37115317, --ckpt last EMA): the A549 mock leg (predict + # 37187244 COMPLETED 2026-10-10 05:08), scored while denv and zikv still predict. Generate with + # --wave wave3g. + wave3g: + membrane: + - {model: pix2pix3d_unetvit_segaux_seed1, leaves: [a549__mock]} + # ... and its zikv leg (predict finished 2026-10-10 after wave3h). Generate with --wave wave3i. + wave3i: + er: + - {model: fnet3d_vscyto3daug_segaux_seed1, leaves: [a549__zikv]} + # Second draw of the FNet-3D vscyto3daug ER segaux arm (fit 37115303, step 200000, --ckpt best + # epoch=88-step=195533), 2026-10-10: the iPSC, mock and denv legs, scored while zikv predicts. + # Stage-matched to the ER baselines (epoch 90 / 68) and draw 1 (86). Generate with --wave wave3h. + wave3h: + er: + - {model: fnet3d_vscyto3daug_segaux_seed1, leaves: [ipsc, a549__mock, a549__denv]} + # Second draw of the pix2pix3d MEMBRANE segaux arm (fit 37115317, epoch 39/40, --ckpt last, + # EMA, sliding window; same rule as draw 1), 2026-10-09: the iPSC leg, scored ahead of the + # A549 legs that are still predicting. Generate with --wave wave3f. + wave3f: + membrane: + - {model: pix2pix3d_unetvit_segaux_seed1, leaves: [ipsc]} + # Second draw of the UNeXt2-3D NUCLEUS segaux arm (fit 37027791, epoch 199/200, --ckpt best + # epoch=75), 2026-10-09: all four legs. Stage-matched to the baselines (v2 e81, v2_seed1 e88). + # Generate with --wave wave3e. + wave3e: + nucleus: + - fcmae_vscyto3d_scratch_segaux_seed1 + # Track H bglp A549 legs (predicts 37004614/20/22 COMPLETED 2026-10-07), the last Track H + # stores. Generate with --wave wave3d. + wave3d: + nucleus: + - {model: celldiff_2d_bglp, leaves: [a549__mock, a549__denv, a549__zikv]} + # Track H bgflat A549 denv leg (predict 37004626 COMPLETED 2026-10-07 13:01), the last bgflat + # leg after wave2y. bglp A549 mock/denv/zikv are still predicting. Generate with --wave wave3c. + wave3c: + nucleus: + - {model: celldiff_2d_bgflat, leaves: [a549__denv]} + # FNet-3D vscyto3daug ER soft-clDice arm (fit 36933630, max_steps 200000, --ckpt best + # epoch=90-step=199927), 2026-10-07: all four legs. Stage-matched to the wave2s ER baselines + # (epoch 90 / 68), segaux (86) and SAUNA (80). Generate with --wave wave3b. + wave3b: + er: + - fnet3d_vscyto3daug_segaux_cldice + # Checkpoint-stage control for the FNet-3D vscyto3daug mito segaux_cldice arm (2026-10-07): + # re-predicted from the retained epoch=68-step=179400 (its --ckpt best is epoch=38-step=101400; + # the baselines used epoch 62 / 65). Stores and leaves are outside the generated tree + # (experiments/2026-09-24_spotlight-v2/e68_mito_cldice_control/). Read against wave2s + wave2v. + # Generate with --wave ctrl4. + ctrl4: + mito: + - model: fnet3d_vscyto3daug_segaux_cldice_e68 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_cldice_e68/ipsc/a549__zikv/prediction.zarr + # FNet-3D vscyto3daug mito soft-clDice arm (fit 36933666, max_steps 200000, --ckpt best + # epoch=38-step=101400), 2026-10-07: all four legs. Read against the wave2s + wave2v mito + # baselines; stage control in ctrl4. Generate with --wave wave3a. + wave3a: + mito: + - fnet3d_vscyto3daug_segaux_cldice + # FNet-3D vscyto3daug mito SAUNA-map-weighted Dice arm (fit 36933658, max_steps 200000, + # --ckpt best epoch=66-step=174200), 2026-10-07: all four legs. Stage-matched to the wave2s + + # wave2v mito baselines (epoch 62 / 65). Generate with --wave wave2z. + wave2z: + mito: + - fnet3d_vscyto3daug_segaux_sauna + # Track H background-target CELL-Diff-2D nucleus arms (2026-10-06), predicted from last.ckpt + # like the CELL-Diff-2D baselines: bglp = background low-pass sigma 2 (r2/f1), bgflat = flat + # per-patch background mean (r4/f2). The finished legs only; bglp A549 mock/denv/zikv and + # bgflat A549 denv are still predicting and go in a later wave. Generate with --wave wave2y. + wave2y: + nucleus: + - {model: celldiff_2d_bglp, leaves: [ipsc]} + - {model: celldiff_2d_bgflat, leaves: [ipsc, a549__mock, a549__zikv]} + # FNet-3D vscyto3daug ER SAUNA-map-weighted Dice arm (fit 36933625, max_steps 200000, + # --ckpt best epoch=80-step=177957), 2026-10-06: all four legs. Stage-matched to the wave2s + # ER baselines (epoch 90 / 68) and segaux (epoch 86). Generate with --wave wave2x. + wave2x: + er: + - fnet3d_vscyto3daug_segaux_sauna + # Checkpoint-stage control for the FNet-3D vscyto3daug mito segaux arm (2026-10-06): segaux + # re-predicted from latest-epoch=76-step=200000 (its --ckpt best is epoch=30-step=80600; the + # baselines used epoch 62 / 65). No checkpoint between epoch 36 and 75 was retained, so e76 is + # the closest stage, and later than both baselines. Stores and leaves are outside the generated + # tree (experiments/2026-09-24_spotlight-v2/e76_mito_control/). Read against wave2s + wave2v. + # Generate with --wave ctrl3. + ctrl3: + mito: + - model: fnet3d_vscyto3daug_segaux_e76 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/mito/fnet3d_vscyto3daug_segaux_e76/ipsc/a549__zikv/prediction.zarr + # FNet-3D vscyto3daug mito segaux arm (fit 36933644, max_steps 200000, --ckpt best + # epoch=30-step=80600), 2026-10-06: all four legs. Read against the wave2s + wave2v mito + # baselines; cubic 0.9.0a4 eval venv. Generate with --wave wave2w. + wave2w: + mito: + - fnet3d_vscyto3daug_segaux + # Checkpoint-stage control for the FNet-3D vscyto3daug nucleus floor (2026-10-05): v2_seed1 + # re-predicted from epoch=74-step=195000 (its --ckpt best is epoch=17; v2 used epoch=64 and + # the arms 127k-190k steps). Stores and leaves are outside the generated tree + # (experiments/2026-09-24_spotlight-v2/e74_control/). Read against the wave2q 2x2. + # Generate with --wave ctrl2. + ctrl2: + nucleus: + - model: fnet3d_vscyto3daug_v2_seed1_e74 + pred_paths: + ipsc: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/ipsc/prediction.zarr + a549__mock: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__mock/prediction.zarr + a549__denv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__denv/prediction.zarr + a549__zikv: /hpc/projects/virtual_staining/training/dynacell/_spotlight_v2_controls/nucleus/fnet3d_vscyto3daug_v2_seed1_e74/ipsc/a549__zikv/prediction.zarr + # FNet-3D vscyto3daug mito v2 baseline, seed 1 (fit 36890546 resumed as 37004479 after a + # NODE_FAIL requeue, max_steps 200000, --ckpt best epoch 65), 2026-10-05: all four legs. Gives + # the mito baseline seed floor next to wave2s's seed 0; cubic 0.9.0a4 eval venv. Generate with + # --wave wave2v. + wave2v: + mito: + - fnet3d_vscyto3daug_v2_seed1 + # FNet-3D vscyto3daug nucleus soft-clDice arm (Stage 2 #5; fit 36910358, max_steps 200000, + # --ckpt best epoch 72), 2026-10-05: all four legs. Nucleus bodies never skeletonize at + # cldice_iters=5, so this arm is ~segaux at half the Dice weight, not a clDice test. Read + # against the wave2q 2x2. Generate with --wave wave2u. + wave2u: + nucleus: + - fnet3d_vscyto3daug_segaux_cldice + # FNet-3D vscyto3daug ER segaux arm (fit 36933617, max_steps 200000, --ckpt best epoch 86), + # 2026-10-04: all four legs. Read against the wave2s ER baselines; cubic 0.9.0a4 eval venv. + # Generate with --wave wave2t. + wave2t: + er: + - fnet3d_vscyto3daug_segaux + # First ER/mito wave (2026-10-04, all four legs): the FNet-3D vscyto3daug v2 + # baselines the ER/mito Spotlight arms are read against -- ER at two seeds (epoch 90 / 68), + # mito seed 0 (epoch 62). Scored like the canonical er_/mitochondria_ grouped leaves (semantic + # Dice, no instance AP); submit in the cubic 0.9.0a4 eval venv. Generate with --wave wave2s. + wave2s: + er: + - fnet3d_vscyto3daug_v2 + - fnet3d_vscyto3daug_v2_seed1 + mito: + - fnet3d_vscyto3daug_v2 + # FNet-3D vscyto3daug nucleus SAUNA-map-weighted Dice arm (Stage 2 #5; fit 36906516, + # max_steps 200000, --ckpt best epoch 64), 2026-10-04: all four legs. Read against the + # wave2q 2x2. Generate with --wave wave2r. + wave2r: + nucleus: + - fnet3d_vscyto3daug_segaux_sauna + # 2026-10-04, all four legs, --ckpt best: + # - the FNet-3D vscyto3daug nucleus 2x2 (big patch + VSCyto3D augs, the OOD-competent FNet: + # {v2, segaux} x {seed 0, seed 1}); + # - the second draw of the fresh UNeXt2-3D baselines (the seed floor for their segaux arms). + # Generate with --wave wave2q. + wave2q: + nucleus: + - fnet3d_vscyto3daug_v2 + - fnet3d_vscyto3daug_v2_seed1 + - fnet3d_vscyto3daug_segaux + - fnet3d_vscyto3daug_segaux_seed1 + - fcmae_vscyto3d_scratch_v2_seed1 + membrane: + - fcmae_vscyto3d_scratch_v2_seed1 + # Second draw of the pix2pix3d nucleus segaux arm (--ckpt last, EMA), 2026-10-03: all four legs. + # Gates the membrane pix2pix3d segaux_seed1 fit. Generate with --wave wave2p. + wave2p: + nucleus: + - pix2pix3d_unetvit_segaux_seed1 + # Second draw of the UNeXt2-3D MEMBRANE segaux arm (--ckpt best epoch 164), 2026-10-02: all four legs. + # Generate with --wave wave2o. + wave2o: + membrane: + - fcmae_vscyto3d_scratch_segaux_seed1 + # Second draw of the pix2pix3d v2 MEMBRANE baseline (--ckpt last, EMA), 2026-10-02: all four legs. The DENV + # and MOCK jobs hit their 20 h wall after writing all 12 FOVs (markers 22:09 / 22:16, kill 22:41). + # Generate with --wave wave2n. + wave2n: + membrane: + - pix2pix3d_unetvit_v2_seed1 + # Second draw of the pix2pix3d v2 nucleus baseline (--ckpt last, EMA), 2026-10-01: the + # baseline seed spread for the OOD-competent family whose segaux arm leads on A549. + # Generate with --wave wave2i. + wave2i: + nucleus: + - pix2pix3d_unetvit_v2_seed1 + # FNet-3D nucleus segaux at 0.5x seg_aux_weight (loss-weight sweep, --ckpt best epoch 206), + # 2026-10-01. Generate with --wave wave2m. + wave2m: + nucleus: + - fnet3d_paper_segaux_halfw + # FNet-3D nucleus segaux at 2x seg_aux_weight (loss-weight sweep, --ckpt best), 2026-09-30. + # Generate with --wave wave2l. + wave2l: + nucleus: + - fnet3d_paper_segaux_doublew + # CELL-Diff A549 nucleus legs that finished after wave2j (2026-09-30): all three + # CELL-Diff-3D C-joint legs and the CELL-Diff-2D seed1 MOCK leg. Generate with --wave wave2k. + wave2k: + nucleus: + - {model: celldiff_cjoint_iterative, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: celldiff_2d_seed1, leaves: [a549__mock]} + # Second draw of the FNet-3D nucleus segaux arm (fit max_steps 200000, --ckpt best + # epoch=180-step=156746), 2026-09-30. Generate with --wave wave2h. + wave2h: + nucleus: + - fnet3d_paper_segaux_seed1 + # CELL-Diff A549 legs that finished after wave2f (2026-09-29): the CELL-Diff-2D C-cond arm + # re-predicted with threshold="otsu" (its fixed-t=0.30 wave2a scores are kept aside as + # _spotlight_v2/nucleus/celldiff_2d_ccond/ipsc/.fixed_t030), two CELL-Diff-3D segaux legs + # and the first CELL-Diff-2D seed1 A549 leg. Generate with --wave wave2g. + wave2g: + nucleus: + - {model: celldiff_2d_ccond, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: celldiff_segaux_iterative, leaves: [a549__mock, a549__zikv]} + - {model: celldiff_2d_seed1, leaves: [a549__denv]} + # Second draw of the FNet-2D segaux arm (both organelles) and the UNeXt2-3D membrane segaux + # arm (fit ep199/200, --ckpt best ep125), 2026-09-29. Generate with --wave wave2f. + wave2f: + nucleus: + - fnet2d_segaux_seed1 + membrane: + - fnet2d_segaux_seed1 + - fcmae_vscyto3d_scratch_segaux + # Otsu-threshold C-cond iPSC legs (CELL-Diff-2D and -3D) and the CELL-Diff-2D membrane + # segauxself ZIKV leg, 2026-09-28. Generate with --wave wave2e. + wave2e: + nucleus: + - {model: celldiff_ccond_iterative, leaves: [ipsc]} + - {model: celldiff_2d_ccond, leaves: [ipsc]} + membrane: + - {model: celldiff_2d_segauxself, leaves: [a549__zikv]} + # UNeXt2-3D nucleus: the segaux arm and its fresh v2 baseline (fits ep199/200, --ckpt best + # ep95 / ep81), 2026-09-28. Generate with --wave wave2d. + wave2d: + nucleus: + - fcmae_vscyto3d_scratch_segaux + - fcmae_vscyto3d_scratch_v2 + # Seed-replicate A549 legs (the A549 noise floor; fnet3d_paper_seed1 also checks the April + # FNet-3D baseline store) and the fresh UNeXt2-3D membrane baseline (2026-09-28). + # Generate with --wave wave2c. + wave2c: + nucleus: + - {model: fnet2d_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: fcmae_vscyto2d_scratch_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: pix2pix2d_unetvit_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: fnet3d_paper_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + membrane: + - {model: fnet2d_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: fcmae_vscyto2d_scratch_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: pix2pix2d_unetvit_seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: fcmae_vscyto2d_scratch_l1seed1, leaves: [a549__mock, a549__denv, a549__zikv]} + - fcmae_vscyto3d_scratch_v2 + # pix2pix3d nucleus legs that finished after wave2a (2026-09-28). Generate with --wave wave2b. + wave2b: + nucleus: + - {model: pix2pix3d_unetvit_segaux, leaves: [a549__zikv]} + - {model: pix2pix3d_unetvit_v2, leaves: [a549__mock, a549__denv]} + # Stage 1/2 batch of finished predicts (2026-09-28): 2D segauxself + l1 arms, FNet-3D, + # pix2pix3d and CELL-Diff-3D legs that completed. (The CELL-Diff-2D C-cond arm was scored here + # at fixed t=0.30, then moved back to wave1 for its Otsu re-predict.) + # Generate with --wave wave2a. + wave2a: + nucleus: + - {model: celldiff_cjoint_iterative, leaves: [ipsc]} + - {model: celldiff_segaux_iterative, leaves: [ipsc]} + - fcmae_vscyto2d_scratch_segauxself + - {model: fnet3d_paper_seed1, leaves: [ipsc]} + - fnet3d_paper_segaux + - pix2pix2d_unetvit_segauxself + - {model: pix2pix3d_unetvit_segaux, leaves: [ipsc, a549__mock, a549__denv]} + - {model: pix2pix3d_unetvit_v2, leaves: [ipsc, a549__zikv]} + membrane: + - {model: celldiff_2d_segauxself, leaves: [ipsc]} + - {model: celldiff_segaux_iterative, leaves: [ipsc]} + - {model: fcmae_vscyto2d_scratch_l1seed1, leaves: [ipsc]} + - fcmae_vscyto2d_scratch_l1segaux + - fcmae_vscyto2d_scratch_segauxself + - fnet2d_segauxself + - fnet3d_paper_segaux + - pix2pix2d_unetvit_segauxself + - pix2pix3d_unetvit_segaux + - pix2pix3d_unetvit_v2 + # Stage 1/2, third batch of finished 2D predicts (2026-09-27): CELL-Diff-2D segaux/seed1/cjoint, + # UNeXt2-2D nucleus segaux/seed1, the first segauxself arms, the jointsteps probe and the l1 + # probe's A549 legs (its iPSC leg is in wave1b). Generate with --wave wave1d. + wave1d: + nucleus: + - fcmae_vscyto2d_scratch_segaux + - celldiff_2d_segaux + - celldiff_2d_cjoint + - fnet2d_segauxself + - celldiff_2d_segauxself + - {model: fcmae_vscyto2d_scratch_seed1, leaves: [ipsc]} + - {model: celldiff_2d_seed1, leaves: [ipsc]} + membrane: + - celldiff_2d_segaux + - {model: celldiff_2d_seed1, leaves: [ipsc]} + - {model: fcmae_vscyto2d_scratch_jointsteps, leaves: [ipsc]} + - {model: fcmae_vscyto2d_scratch_l1, leaves: [a549__mock, a549__denv, a549__zikv]} + # Stage 1, second batch of finished predicts (2026-09-25): FNet-2D, UNeXt2-2D membrane + # (segaux, seed1, l1/safecrop probes) and pix2pix2d membrane segaux. Generate with --wave wave1b. + wave1b: + nucleus: + - fnet2d_segaux + - {model: fnet2d_seed1, leaves: [ipsc]} + membrane: + - fnet2d_segaux + - fcmae_vscyto2d_scratch_segaux + - pix2pix2d_unetvit_segaux + - {model: fnet2d_seed1, leaves: [ipsc]} + - {model: fcmae_vscyto2d_scratch_seed1, leaves: [ipsc]} + - {model: fcmae_vscyto2d_scratch_l1, leaves: [ipsc]} + - {model: fcmae_vscyto2d_scratch_safecrop, leaves: [ipsc]} + # Stage 1 first wave, now only the CELL-Diff A549 legs still predicting: do NOT run the + # generator on it until every predict has COMPLETED -- its store gate refuses absent or + # partial stores. The CellDiff-3D arm is keyed by its store dir celldiff_segaux_iterative + # (checkpoints under .../celldiff_segaux/), as stage0 keys the baseline by celldiff_r2_iterative. + wave1: + nucleus: + # Stage 1b (nucleus only for now): mask in the generative process. + - {model: celldiff_ccond_iterative, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: celldiff_2d_seed1, leaves: [a549__zikv]} + membrane: + - {model: celldiff_segaux_iterative, leaves: [a549__mock, a549__denv, a549__zikv]} + - {model: celldiff_2d_seed1, leaves: [a549__mock, a549__zikv]} diff --git a/applications/dynacell/tools/write_classical_fg_masks.py b/applications/dynacell/tools/write_classical_fg_masks.py new file mode 100644 index 000000000..33e961934 --- /dev/null +++ b/applications/dynacell/tools/write_classical_fg_masks.py @@ -0,0 +1,112 @@ +r"""Write ``fg_mask`` built with the eval's classical ER / mito binarizer. + +This wrote the ``fg_mask`` arrays in the iPSC training stores +``/hpc/projects/virtual_staining/training/dynacell/ipsc/dataset_v4/train/SEC61B.zarr`` +(423 positions, 2026-10-01) and ``.../train/TOMM20.zarr`` (500 positions, +2026-10-01/02), which the ER and mito Spotlight-v2 arms +(``generate_spotlight_v2_leaves.py``, ``fg_mask_key: fg_mask``) train on. That +run predates the provenance attributes below, so those arrays carry none. Its +environment was not recorded either: it finished before #519 moved +``segment``'s ER/mito path from aicssegmentation to cubic, so it most likely +used aicssegmentation, but that is inferred from timing, not recorded. + +Same array layout as ``viscy_utils.meta_utils.generate_fg_masks`` (uint8, +``(T, C, Z, Y, X)``, source chunking capped at 512, non-target channels filled +with 1) so ``HCSDataModule(fg_mask_key="fg_mask")`` reads it unchanged. Only the +binarizer differs: ``dynacell.evaluation.segmentation.segment``, the exact +operator the Dice readout applies to GT and prediction. Every array written +records its provenance in its zarr attributes under ``provenance``. Touches no +``normalization`` metadata, and refuses to overwrite an existing mask array. + +Needs the eval venv. Shard over positions with ``--shard i/n``; each shard +writes disjoint positions. + +Run:: + + uv run --no-sync python applications/dynacell/tools/write_classical_fg_masks.py \ + --target-name er --shard 0/8 +""" + +import argparse +import datetime +import time +from importlib.metadata import version + +import numpy as np +from iohub import open_ome_zarr + +from dynacell.evaluation.segmentation import segment + +WRITER = "applications/dynacell/tools/write_classical_fg_masks.py" +BINARIZER = "dynacell.evaluation.segmentation.segment" + + +def main(argv: list[str] | None = None) -> int: + """Write the classical-binarizer ``fg_mask`` for every position of a shard. + + Parameters + ---------- + argv : list of str or None + Command-line arguments; ``None`` reads ``sys.argv``. + + Returns + ------- + int + 0 on success. + """ + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("store") + ap.add_argument("--target-name", required=True, choices=["er", "mitochondria"]) + ap.add_argument("--channel", default="Structure") + ap.add_argument("--fg-mask-key", default="fg_mask") + ap.add_argument("--shard", default="0/1", help="i/n: process positions[i::n]") + ap.add_argument("--dry-run", action="store_true", help="Segment and report; write nothing.") + args = ap.parse_args(argv) + i, n = (int(v) for v in args.shard.split("/")) + if n <= 0 or not 0 <= i < n: + raise ValueError(f"--shard {args.shard!r}: need 0 <= i < n") + provenance = { + "writer": WRITER, + "binarizer": BINARIZER, + "target_name": args.target_name, + "channel": args.channel, + "cubic_version": version("cubic"), + "date": datetime.date.today().isoformat(), + } + + with open_ome_zarr(args.store, mode="r" if args.dry_run else "r+") as plate: + ch_idx = plate.channel_names.index(args.channel) + positions = list(plate.positions())[i::n] + for k, (pos_name, pos) in enumerate(positions): + if not args.dry_run and args.fg_mask_key in pos: + raise FileExistsError(f"'{args.fg_mask_key}' already exists at {pos_name}") + img = pos["0"] + t_total, c_total, *zyx = img.shape + t0 = time.perf_counter() + masks = [ + np.asarray(segment(np.asarray(img[t, ch_idx], dtype=np.float32), args.target_name)) + for t in range(t_total) + ] + frac = float(np.mean([m.mean() for m in masks])) + if not args.dry_run: + src = img.chunks + arr = pos.create_zeros( + args.fg_mask_key, + shape=(t_total, c_total, *zyx), + dtype=np.uint8, + chunks=(1, 1, min(src[2], zyx[0]), min(src[3], 512), min(src[4], 512)), + ) + arr.native.attrs["provenance"] = provenance + for c in sorted(set(range(c_total)) - {ch_idx}): + arr[:, c] = 1 + for t, m in enumerate(masks): + arr[t, ch_idx] = m.astype(np.uint8) + print( + f"[{i}/{n}] {k + 1}/{len(positions)} {pos_name} fg={frac:.4f} {time.perf_counter() - t0:.1f}s", + flush=True, + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/applications/dynacell/tools/write_classical_fg_masks_test.py b/applications/dynacell/tools/write_classical_fg_masks_test.py new file mode 100644 index 000000000..06570dc7c --- /dev/null +++ b/applications/dynacell/tools/write_classical_fg_masks_test.py @@ -0,0 +1,122 @@ +"""Integration tests for ``write_classical_fg_masks.py``. + +Each test builds a tiny synthetic HCS OME-Zarr in ``tmp_path`` and runs the tool +for real. ``segment`` is replaced by a fixed threshold: the eval binarizer is +tested with the evaluation code, and this tool's contract is the array it writes. + +Run (worktree):: + + uv run --no-sync pytest applications/dynacell/tools/write_classical_fg_masks_test.py -q +""" + +from __future__ import annotations + +import datetime +from importlib.metadata import version +from pathlib import Path + +import numpy as np +import pytest +import write_classical_fg_masks +from iohub.ngff import open_ome_zarr +from write_classical_fg_masks import main + +_CHANNELS = ["Phase3D", "Structure", "Nuclei"] +_SHAPE = (2, len(_CHANNELS), 4, 16, 16) +_POSITIONS = ("A/1/0", "A/2/0") + + +def _threshold(img: np.ndarray, target_name: str) -> np.ndarray: + assert target_name == "er" + return img > 0.5 + + +@pytest.fixture(autouse=True) +def _fixed_binarizer(monkeypatch: pytest.MonkeyPatch) -> None: + monkeypatch.setattr(write_classical_fg_masks, "segment", _threshold) + + +def _make_store(path: Path) -> dict[str, np.ndarray]: + """Write a tiny random store; return each position's image.""" + rng = np.random.default_rng(0) + images = {} + with open_ome_zarr(path, layout="hcs", mode="w-", channel_names=_CHANNELS) as plate: + for name in _POSITIONS: + data = rng.random(_SHAPE, dtype=np.float32) + pos = plate.create_position(*name.split("/")) + pos.create_image("0", data, chunks=(1, 1, 4, 16, 16)) + images[name] = data + return images + + +def test_writes_uint8_tczyx_mask_with_ones_off_target(tmp_path: Path) -> None: + """The target channel holds the binarizer output; every other channel is 1.""" + store = tmp_path / "tiny.zarr" + images = _make_store(store) + assert main([str(store), "--target-name", "er"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + for name, pos in plate.positions(): + mask = pos["fg_mask"] + assert mask.dtype == np.uint8 + assert mask.shape == _SHAPE + got = mask[:] + want_target = (images[name][:, 1] > 0.5).astype(np.uint8) + np.testing.assert_array_equal(got[:, 1], want_target) + assert 0 < want_target.mean() < 1 + np.testing.assert_array_equal(got[:, [0, 2]], 1) + + +def test_records_provenance_on_every_array(tmp_path: Path) -> None: + """Every written array names its writer, binarizer, target, channel and date.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + assert main([str(store), "--target-name", "er", "--channel", "Structure"]) == 0 + want = { + "writer": "applications/dynacell/tools/write_classical_fg_masks.py", + "binarizer": "dynacell.evaluation.segmentation.segment", + "target_name": "er", + "channel": "Structure", + "cubic_version": version("cubic"), + "date": datetime.date.today().isoformat(), + } + with open_ome_zarr(store, mode="r") as plate: + provenance = [dict(pos["fg_mask"].native.attrs["provenance"]) for _, pos in plate.positions()] + assert provenance == [want] * len(_POSITIONS) + + +@pytest.mark.parametrize("shard", ["2/2", "-1/2", "0/0"]) +def test_rejects_an_out_of_range_shard(tmp_path: Path, shard: str) -> None: + """A shard outside ``0 <= i < n`` raises instead of silently writing a partial store.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + with pytest.raises(ValueError, match="need 0 <= i < n"): + main([str(store), "--target-name", "er", f"--shard={shard}"]) + with open_ome_zarr(store, mode="r") as plate: + assert not any("fg_mask" in pos for _, pos in plate.positions()) + + +def test_dry_run_reports_on_a_store_that_already_has_masks(tmp_path: Path) -> None: + """A dry run segments and reports without tripping the overwrite guard or writing.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + assert main([str(store), "--target-name", "er"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + before = {name: pos["fg_mask"][:] for name, pos in plate.positions()} + assert main([str(store), "--target-name", "er", "--dry-run"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + for name, pos in plate.positions(): + np.testing.assert_array_equal(pos["fg_mask"][:], before[name]) + + +def test_refuses_to_overwrite_an_existing_mask(tmp_path: Path) -> None: + """A second run raises before touching the masks the first run wrote.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + assert main([str(store), "--target-name", "er"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + before = {name: pos["fg_mask"][:] for name, pos in plate.positions()} + with pytest.raises(FileExistsError, match="'fg_mask' already exists at A/1/0"): + main([str(store), "--target-name", "er"]) + with open_ome_zarr(store, mode="r") as plate: + for name, pos in plate.positions(): + np.testing.assert_array_equal(pos["fg_mask"][:], before[name]) diff --git a/applications/dynacell/tools/write_otsu_thresholds.py b/applications/dynacell/tools/write_otsu_thresholds.py new file mode 100644 index 000000000..059122bbe --- /dev/null +++ b/applications/dynacell/tools/write_otsu_thresholds.py @@ -0,0 +1,201 @@ +#!/usr/bin/env python +"""Add ``otsu_threshold`` to a training store WITHOUT rewriting its other statistics. + +``viscy preprocess --compute_otsu`` is the obvious way to get the Otsu thresholds +Spotlight needs. It is the wrong way for the DynaCell iPSC training stores, because +it always calls ``generate_normalization_metadata``, which recomputes and REPLACES +``mean``/``std``/``median``/``iqr`` at three levels (``fov_statistics``, +``dataset_statistics``, every ``timepoint_statistics`` entry) on both the position +nodes and the plate node. Every published iPSC model normalizes against those values. + +That replacement is only harmless if recomputation is bit-exact, and on +``cell_focus.zarr`` it is NOT. Measured on ``4/10615/1304``, channel ``Nuclei``: + + stored (inherited) mean 417.3512 std 18.0563 max 690.0 + recomputed on slab mean 419.8103 std 20.8461 max 635.0 + +The focus store was carved from the full-Z ``cell.zarr`` by +``extract_focus_slab_store.py`` and inherited its parent's ``normalization`` block +verbatim -- byte-identical on all 500 of 500 positions. So the stored statistics +describe 44 planes while the store holds 5. Running the stock CLI would silently +re-base the target normalization of every 2D arm that trains on this store, which +would confound any spotlight-vs-baseline comparison with a normalization change. + +This tool computes the SAME threshold the stock path computes -- identical grid +sample, identical median filter, identical ``threshold_otsu`` call, identical +constant-input guard -- and writes only that one key, preserving every other +statistic byte-for-byte. ``generate_fg_masks`` reads +``normalization..fov_statistics.otsu_threshold`` and so runs unmodified +afterwards. + +``--threshold-from PARENT`` computes each threshold on a different store's +matching position instead of this one's. ``cell_focus.zarr`` needs it: the recipe +smooths across Z with a 5x5x5 median and a sigma=5 Gaussian, and a 5-plane slab +has no Z to accumulate over, so estimating there inverts the recipe's effect. +Measured over 60 positions, mean foreground on the focus store's own masks: + + Nuclei Membrane + on disk (old recipe) 0.3319 0.2496 (2 FOVs under 2%) + new recipe on the 5 planes 0.3317 0.2189 (2 FOVs under 2%) + new recipe on the parent 0.3846 0.1861 (0 FOVs under 2%) + +The slab is a verbatim voxel copy of the parent, so the parent is the same +specimen on the same intensity scale -- and sharing one estimate keeps the 2D +arms (which train on the focus store) and the 3D arms (which train on the +parent) from being handed masks built by differently-behaving operators. + +Rollback is the inverse and is exact: delete the one key per (position, channel). +``--undo`` does it. +""" + +from __future__ import annotations + +import argparse +import sys +from contextlib import ExitStack + +from iohub import ngff +from iohub.core.config import TensorStoreConfig +from tqdm import tqdm + +from viscy_utils.meta_utils import _grid_sample, otsu_threshold_from_volume, write_meta_field + +_OTSU_KEY = "otsu_threshold" + + +def compute_otsu_threshold(position: ngff.Position, channel_index: int) -> float: + """Compute one FOV's Otsu threshold exactly as ``generate_normalization_metadata`` does. + + Delegates to :func:`viscy_utils.meta_utils.otsu_threshold_from_volume` rather + than reimplementing the recipe, so this tool cannot drift from the stock + preprocess pass -- the whole point of the tool is that the value it writes is + the one the pipeline would have written. + + Parameters + ---------- + position : ngff.Position + Position node to read. + channel_index : int + Index of the channel within the store's channel list. + + Returns + ------- + float + The Otsu threshold, or the constant value itself for a constant input + (Otsu is undefined there). + """ + return otsu_threshold_from_volume(_grid_sample(position, 1, channel_index)) + + +def _resolve_source(plate, parent, name, pos): + """Return the position the threshold is computed on, and its channel list. + + Raises rather than falling back when the parent lacks the position: a silent + per-position fallback would give the store two different threshold recipes, + which is the exact asymmetry --threshold-from exists to remove. + """ + if parent is None: + return pos, plate.channel_names + if name not in _parent_names(parent): + raise KeyError(f"position {name!r} is absent from the --threshold-from store") + return parent[name], parent.channel_names + + +def _parent_names(parent): + """Position names of the parent plate, cached on the plate object. + + iohub's Plate.__contains__ returns False for a valid nested "row/col/fov" + path that indexes fine, so membership has to be tested against the list. + """ + if not hasattr(parent, "_cached_position_names"): + parent._cached_position_names = {n for n, _ in parent.positions()} + return parent._cached_position_names + + +def main(argv: list[str] | None = None) -> int: + """Write (or remove) ``otsu_threshold`` across every position of a store.""" + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("store", help="Path to the HCS OME-Zarr training store.") + ap.add_argument("--channel", action="append", required=True, dest="channels", help="Target channel (repeatable).") + ap.add_argument("--num-workers", type=int, default=8, help="tensorstore data_copy_concurrency.") + ap.add_argument("--dry-run", action="store_true", help="Compute and report; write nothing.") + ap.add_argument("--undo", action="store_true", help="Delete the key instead of writing it.") + ap.add_argument( + "--threshold-from", + default=None, + help="Compute each threshold on this store's matching position instead of the target's.", + ) + args = ap.parse_args(argv) + + mode = "r" if args.dry_run else "r+" + config = TensorStoreConfig(data_copy_concurrency=args.num_workers) + with ExitStack() as stack: + plate = stack.enter_context( + ngff.open_ome_zarr(args.store, mode=mode, implementation="tensorstore", implementation_config=config) + ) + parent = None + if args.threshold_from is not None: + parent = stack.enter_context( + ngff.open_ome_zarr( + args.threshold_from, mode="r", implementation="tensorstore", implementation_config=config + ) + ) + print(f" thresholds computed on {args.threshold_from}") + missing = [c for c in args.channels if c not in plate.channel_names] + if missing: + print(f"[FAIL] channels not in store: {missing}; have {plate.channel_names}", file=sys.stderr) + return 2 + indices = {c: plate.channel_names.index(c) for c in args.channels} + if parent is not None: + missing_parent = [c for c in args.channels if c not in parent.channel_names] + if missing_parent: + print(f"[FAIL] channels not in --threshold-from store: {missing_parent}", file=sys.stderr) + return 2 + positions = list(plate.positions()) + + # Refuse a partial store outright. _collate_norm_meta takes its stat-key set + # from sample 0 of the batch and indexes every peer with it, so a store where + # only SOME positions carry otsu_threshold raises KeyError only on batches + # whose sample 0 happens to have it -- intermittently, hours into a run, and + # on BASELINE fits too, not just spotlight ones. + present = sum( + _OTSU_KEY in pos.zattrs["normalization"][c]["fov_statistics"] for _, pos in positions for c in args.channels + ) + total = len(positions) * len(args.channels) + print(args.store) + print(f" {len(positions)} positions x {len(args.channels)} channels; {present}/{total} carry {_OTSU_KEY}") + if not args.undo and present == total: + print(" nothing to do: already complete.") + return 0 + if args.undo and present == 0: + print(" nothing to do: already absent.") + return 0 + + written = 0 + for name, pos in tqdm(positions, desc="undo" if args.undo else "otsu"): + for channel in indices: + # write_meta_field merges at the CHANNEL level but replaces the whole + # sub-dict it is handed, so pass fov_statistics back in full: that is + # what makes this additive. dataset_statistics, timepoint_statistics, + # the plate node and the `ome` block are never touched. + stats = dict(pos.zattrs["normalization"][channel]["fov_statistics"]) + if args.undo: + if stats.pop(_OTSU_KEY, None) is None: + continue + else: + source, source_channels = _resolve_source(plate, parent, name, pos) + stats[_OTSU_KEY] = compute_otsu_threshold(source, source_channels.index(channel)) + if args.dry_run: + if written < 3: + print(f" [dry-run] {name}/{channel}: {_OTSU_KEY}={stats.get(_OTSU_KEY)}") + else: + write_meta_field(pos, {"fov_statistics": stats}, "normalization", channel) + written += 1 + + verb = "would change" if args.dry_run else ("removed" if args.undo else "written") + print(f"[ok] {written} (position, channel) pairs {verb}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/applications/dynacell/tools/write_otsu_thresholds_test.py b/applications/dynacell/tools/write_otsu_thresholds_test.py new file mode 100644 index 000000000..f4f696098 --- /dev/null +++ b/applications/dynacell/tools/write_otsu_thresholds_test.py @@ -0,0 +1,267 @@ +r"""Integration tests for ``write_otsu_thresholds.py``. + +Each test builds a tiny synthetic HCS OME-Zarr in ``tmp_path`` carrying a +deliberately WRONG ``normalization`` block -- statistics that do not describe the +pixels, exactly as ``cell_focus.zarr`` carries its full-Z parent's values. The tool +is then run for real and the store reopened, so the tests pin the one property the +whole design rests on: every pre-existing statistic survives byte-for-byte. + +Run (worktree):: + + uv run --no-sync pytest applications/dynacell/tools/write_otsu_thresholds_test.py -q +""" + +from __future__ import annotations + +import copy +from pathlib import Path + +import numpy as np +import pytest +from iohub.ngff import open_ome_zarr +from write_otsu_thresholds import main # noqa: E402 + +_CHANNELS = ["Phase3D", "Nuclei", "Membrane"] +# Deliberately not the pixels' real statistics: the point is that they survive. +_SENTINEL_STATS = { + "mean": 1234.5, + "std": 67.5, + "median": 1200.0, + "iqr": 42.0, + "min": 0.0, + "max": 9999.0, + "p1": 1.0, + "p5": 5.0, + "p95": 95.0, + "p99": 99.0, + "p95_p5": 90.0, + "p99_p1": 98.0, +} + + +def _norm_block() -> dict: + """Build a three-level normalization block for every channel, all sentinel-valued.""" + return { + channel: { + "fov_statistics": dict(_SENTINEL_STATS), + "dataset_statistics": dict(_SENTINEL_STATS), + "timepoint_statistics": {"0": dict(_SENTINEL_STATS)}, + } + for channel in _CHANNELS + } + + +def _make_store(path: Path, positions: tuple[str, ...] = ("A/1/0", "A/2/0")) -> None: + """Write a tiny bimodal HCS store whose stored statistics describe nothing.""" + rng = np.random.default_rng(0) + with open_ome_zarr(path, layout="hcs", mode="w-", channel_names=_CHANNELS) as plate: + plate.zattrs.update({"normalization": _norm_block()}) + for name in positions: + row, col, fov = name.split("/") + # Bimodal so Otsu has a real split to find: dim background, bright blob. + data = rng.normal(100.0, 5.0, size=(1, len(_CHANNELS), 4, 32, 32)).astype(np.float32) + data[:, :, :, 8:24, 8:24] += 400.0 + pos = plate.create_position(row, col, fov) + pos.create_image("0", data, chunks=(1, 1, 4, 32, 32)) + pos.zattrs.update({"normalization": _norm_block()}) + + +def _read_norm(path: Path) -> dict: + """Return {position_name: normalization block} plus the plate block under ''.""" + out = {} + with open_ome_zarr(path, mode="r") as plate: + out[""] = copy.deepcopy(plate.zattrs["normalization"]) + for name, pos in plate.positions(): + out[name] = copy.deepcopy(pos.zattrs["normalization"]) + return out + + +def test_only_adds_otsu_threshold_and_changes_nothing_else(tmp_path: Path) -> None: + """Every pre-existing statistic survives byte-for-byte; one key is added.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + before = _read_norm(store) + + assert main([str(store), "--channel", "Nuclei", "--channel", "Membrane"]) == 0 + + after = _read_norm(store) + assert set(after) == set(before) + for node, channels in after.items(): + for channel, levels in channels.items(): + expected_new = {"otsu_threshold"} if (node and channel in ("Nuclei", "Membrane")) else set() + for level, stats in levels.items(): + prior = before[node][channel][level] + added = set(stats) - set(prior) + assert added == (expected_new if level == "fov_statistics" else set()), ( + f"{node}/{channel}/{level}: unexpected added keys {added}" + ) + for key, value in prior.items(): + assert stats[key] == value, f"{node}/{channel}/{level}.{key} was rewritten" + + +def test_threshold_separates_the_two_modes(tmp_path: Path) -> None: + """The written threshold is a real Otsu split, not a degenerate constant.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + assert main([str(store), "--channel", "Nuclei"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + for _, pos in plate.positions(): + threshold = pos.zattrs["normalization"]["Nuclei"]["fov_statistics"]["otsu_threshold"] + assert 100.0 < threshold < 500.0, threshold + + +def test_all_or_nothing_across_positions(tmp_path: Path) -> None: + """Either every (position, channel) carries the key or none does. + + A partially-written store is the dangerous state: ``_collate_norm_meta`` takes + its stat-key set from sample 0 of the batch, so a mixed store raises KeyError + only on batches whose sample 0 happens to carry the key -- intermittently, and + on baseline fits too. + """ + store = tmp_path / "tiny.zarr" + _make_store(store, positions=("A/1/0", "A/2/0", "B/1/0")) + assert main([str(store), "--channel", "Nuclei", "--channel", "Membrane"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + present = [ + "otsu_threshold" in pos.zattrs["normalization"][channel]["fov_statistics"] + for _, pos in plate.positions() + for channel in ("Nuclei", "Membrane") + ] + assert len(present) == 6 + assert all(present) + + +def test_undo_restores_the_original_block(tmp_path: Path) -> None: + """``--undo`` is an exact inverse, so the mutation is fully reversible.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + before = _read_norm(store) + assert main([str(store), "--channel", "Nuclei", "--channel", "Membrane"]) == 0 + assert _read_norm(store) != before + assert main([str(store), "--channel", "Nuclei", "--channel", "Membrane", "--undo"]) == 0 + assert _read_norm(store) == before + + +def test_rerun_is_a_noop_and_dry_run_writes_nothing(tmp_path: Path) -> None: + """Re-running is idempotent, and ``--dry-run`` leaves the store untouched.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + untouched = _read_norm(store) + assert main([str(store), "--channel", "Nuclei", "--dry-run"]) == 0 + assert _read_norm(store) == untouched + + assert main([str(store), "--channel", "Nuclei"]) == 0 + written = _read_norm(store) + assert main([str(store), "--channel", "Nuclei"]) == 0 + assert _read_norm(store) == written + + +def test_unknown_channel_fails_loudly(tmp_path: Path) -> None: + """A typo'd channel exits non-zero rather than silently writing nothing.""" + store = tmp_path / "tiny.zarr" + _make_store(store) + assert main([str(store), "--channel", "Nucleii"]) == 2 + + +@pytest.mark.parametrize("constant", [0.0, 7.5]) +def test_constant_fov_uses_the_constant_itself(tmp_path: Path, constant: float) -> None: + """Otsu is undefined on a constant input; the constant is stored instead. + + ``generate_fg_masks`` thresholds with ``>=``, so this marks the FOV entirely + foreground rather than crashing — the same choice the stock path makes. + """ + store = tmp_path / "flat.zarr" + with open_ome_zarr(store, layout="hcs", mode="w-", channel_names=_CHANNELS) as plate: + plate.zattrs.update({"normalization": _norm_block()}) + pos = plate.create_position("A", "1", "0") + pos.create_image("0", np.full((1, len(_CHANNELS), 4, 32, 32), constant, dtype=np.float32)) + pos.zattrs.update({"normalization": _norm_block()}) + + assert main([str(store), "--channel", "Nuclei"]) == 0 + with open_ome_zarr(store, mode="r") as plate: + _, pos = next(iter(plate.positions())) + assert pos.zattrs["normalization"]["Nuclei"]["fov_statistics"]["otsu_threshold"] == constant + + +def _make_parent(path: Path, positions: tuple[str, ...] = ("A/1/0", "A/2/0"), offset: float = 400.0) -> None: + """Build a parent store whose pixels differ, so a borrowed threshold is distinguishable.""" + rng = np.random.default_rng(7) + with open_ome_zarr(path, layout="hcs", mode="w-", channel_names=_CHANNELS) as plate: + plate.zattrs.update({"normalization": _norm_block()}) + for name in positions: + row, col, fov = name.split("/") + # Same structure as _make_store but a much brighter blob, so Otsu lands + # somewhere the slab's own pixels could never put it. + data = rng.normal(100.0, 5.0, size=(1, len(_CHANNELS), 12, 32, 32)).astype(np.float32) + data[:, :, :, 8:24, 8:24] += offset + pos = plate.create_position(row, col, fov) + pos.create_image("0", data, chunks=(1, 1, 12, 32, 32)) + pos.zattrs.update({"normalization": _norm_block()}) + + +def _thresholds(path: Path, channel: str = "Nuclei") -> dict[str, float]: + with open_ome_zarr(path, mode="r") as plate: + return {n: p.zattrs["normalization"][channel]["fov_statistics"]["otsu_threshold"] for n, p in plate.positions()} + + +def test_threshold_from_uses_the_parents_pixels(tmp_path: Path) -> None: + """--threshold-from must write the PARENT's threshold, not the target's own.""" + store, parent = tmp_path / "slab.zarr", tmp_path / "parent.zarr" + _make_store(store) + _make_parent(parent, offset=1200.0) + + own = tmp_path / "own.zarr" + _make_store(own) + assert main([str(own), "--channel", "Nuclei"]) == 0 + assert main([str(store), "--channel", "Nuclei", "--threshold-from", str(parent)]) == 0 + + borrowed, native = _thresholds(store), _thresholds(own) + assert set(borrowed) == set(native) + # The parent's blob is 3x brighter, so its split sits far above the slab's. + for name, value in borrowed.items(): + assert value > native[name] * 1.5, (name, value, native[name]) + + +def test_threshold_from_still_preserves_every_other_statistic(tmp_path: Path) -> None: + """Borrowing the threshold must not make the write any less additive.""" + store, parent = tmp_path / "slab.zarr", tmp_path / "parent.zarr" + _make_store(store) + _make_parent(parent) + before = _read_norm(store) + + assert main([str(store), "--channel", "Nuclei", "--threshold-from", str(parent)]) == 0 + + after = _read_norm(store) + for node, channels in after.items(): + for channel, levels in channels.items(): + for level, stats in levels.items(): + expected = dict(before[node][channel][level]) + if level == "fov_statistics" and channel == "Nuclei" and node != "": + expected["otsu_threshold"] = stats["otsu_threshold"] + assert stats == expected, (node, channel, level) + + +def test_threshold_from_raises_when_the_parent_lacks_a_position(tmp_path: Path) -> None: + """A per-position fallback would silently mix two recipes, so it must raise.""" + store, parent = tmp_path / "slab.zarr", tmp_path / "parent.zarr" + _make_store(store, positions=("A/1/0", "A/2/0")) + _make_parent(parent, positions=("A/1/0",)) + + with pytest.raises(KeyError, match="absent from the --threshold-from store"): + main([str(store), "--channel", "Nuclei", "--threshold-from", str(parent)]) + + +def test_threshold_from_rejects_a_parent_missing_the_channel(tmp_path: Path) -> None: + """Exit 2 rather than writing a threshold computed on the wrong channel.""" + store, parent = tmp_path / "slab.zarr", tmp_path / "narrow.zarr" + _make_store(store) + rng = np.random.default_rng(3) + with open_ome_zarr(parent, layout="hcs", mode="w-", channel_names=["Phase3D"]) as plate: + plate.zattrs.update({"normalization": {"Phase3D": {"fov_statistics": dict(_SENTINEL_STATS)}}}) + for name in ("A/1/0", "A/2/0"): + row, col, fov = name.split("/") + pos = plate.create_position(row, col, fov) + pos.create_image("0", rng.normal(100.0, 5.0, (1, 1, 12, 32, 32)).astype(np.float32)) + pos.zattrs.update({"normalization": {"Phase3D": {"fov_statistics": dict(_SENTINEL_STATS)}}}) + + assert main([str(store), "--channel", "Nuclei", "--threshold-from", str(parent)]) == 2