From 6f4f46601e7c2377c254e69cb7a1b70d86e77213 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 09:53:28 +0200 Subject: [PATCH 01/20] forbid extras in dumps model and change migrations ci --- fractal_server/app/schemas/v2/dumps.py | 8 +++---- scripts/validate_db_data_with_read_schemas.py | 24 ++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/fractal_server/app/schemas/v2/dumps.py b/fractal_server/app/schemas/v2/dumps.py index 000d961d04..3bf6738856 100644 --- a/fractal_server/app/schemas/v2/dumps.py +++ b/fractal_server/app/schemas/v2/dumps.py @@ -25,7 +25,7 @@ class ProjectDumpV2(BaseModel, extra=Extra.forbid): timestamp_created: str -class TaskDumpV2(BaseModel): +class TaskDumpV2(BaseModel, extra=Extra.forbid): id: int name: str type: str @@ -40,7 +40,7 @@ class TaskDumpV2(BaseModel): output_types: dict[str, bool] -class WorkflowTaskDumpV2(BaseModel): +class WorkflowTaskDumpV2(BaseModel, extra=Extra.forbid): id: int workflow_id: int order: Optional[int] @@ -70,14 +70,14 @@ def task_v1_or_v2(cls, values): return values -class WorkflowDumpV2(BaseModel): +class WorkflowDumpV2(BaseModel, extra=Extra.forbid): id: int name: str project_id: int timestamp_created: str -class DatasetDumpV2(BaseModel): +class DatasetDumpV2(BaseModel, extra=Extra.forbid): id: int name: str project_id: int diff --git a/scripts/validate_db_data_with_read_schemas.py b/scripts/validate_db_data_with_read_schemas.py index 5eed05bf50..c25e7c647e 100644 --- a/scripts/validate_db_data_with_read_schemas.py +++ b/scripts/validate_db_data_with_read_schemas.py @@ -32,6 +32,12 @@ from fractal_server.app.schemas.v2 import WorkflowReadV2 from fractal_server.app.schemas.v2 import WorkflowTaskReadV2 + +def _assert(stm): + if not stm: + raise AssertionError(stm) + + with next(get_sync_db()) as db: # USERS @@ -115,14 +121,16 @@ stm = select(ProjectV2) projects = db.execute(stm).scalars().all() for project in sorted(projects, key=lambda x: x.id): - ProjectReadV2(**project.model_dump()) + obj = ProjectReadV2(**project.model_dump()) + _assert(project.model_dump() == obj.dict()) print(f"V2 - Project {project.id} validated") # TASKS V2 stm = select(TaskV2) tasks = db.execute(stm).scalars().all() for task in sorted(tasks, key=lambda x: x.id): - TaskReadV2(**task.model_dump()) + obj = TaskReadV2(**task.model_dump()) + _assert(task.model_dump() == obj.dict()) print(f"V2 - Task {task.id} validated") # WORKFLOWS V2 @@ -149,33 +157,37 @@ ) ) - WorkflowReadV2( + obj = WorkflowReadV2( **workflow.model_dump(), project=ProjectReadV2(**workflow.project.model_dump()), task_list=task_list, ) + _assert(workflow.model_dump() == obj.dict()) print(f"V2 - Workflow {workflow.id} validated") # DATASETS V2 stm = select(DatasetV2) datasets = db.execute(stm).scalars().all() for dataset in sorted(datasets, key=lambda x: x.id): - DatasetReadV2( + obj = DatasetReadV2( **dataset.model_dump(), project=ProjectReadV2(**dataset.project.model_dump()), ) + _assert(dataset.model_dump() == obj.dict()) print(f"V2 - Dataset {dataset.id} validated") # JOBS V2 stm = select(JobV2) jobs = db.execute(stm).scalars().all() for job in sorted(jobs, key=lambda x: x.id): - JobReadV2(**job.model_dump()) + obj = JobReadV2(**job.model_dump()) + _assert(job.model_dump() == obj.dict()) print(f"V2 - Job {job.id} validated") # COLLECTION STATES V2 stm = select(CollectionStateV2) states = db.execute(stm).scalars().all() for collection_state in sorted(states, key=lambda x: x.id): - CollectionStateV2(**collection_state.model_dump()) + obj = CollectionStateV2(**collection_state.model_dump()) + _assert(collection_state.model_dump() == obj.model_dump()) print(f"V2 - CollectionState {state.id} validated") From 7a11ffaea50fd86030be605790f273c88dce1e41 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 09:59:53 +0200 Subject: [PATCH 02/20] comment bugged line --- scripts/validate_db_data_with_read_schemas.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/validate_db_data_with_read_schemas.py b/scripts/validate_db_data_with_read_schemas.py index c25e7c647e..4cc52e87e3 100644 --- a/scripts/validate_db_data_with_read_schemas.py +++ b/scripts/validate_db_data_with_read_schemas.py @@ -33,9 +33,9 @@ from fractal_server.app.schemas.v2 import WorkflowTaskReadV2 -def _assert(stm): - if not stm: - raise AssertionError(stm) +def _assert_equal(a, b): + if not a == b: + raise AssertionError(f"{a} != {b}") with next(get_sync_db()) as db: @@ -122,7 +122,7 @@ def _assert(stm): projects = db.execute(stm).scalars().all() for project in sorted(projects, key=lambda x: x.id): obj = ProjectReadV2(**project.model_dump()) - _assert(project.model_dump() == obj.dict()) + _assert_equal(project.model_dump(), obj.dict()) print(f"V2 - Project {project.id} validated") # TASKS V2 @@ -130,7 +130,7 @@ def _assert(stm): tasks = db.execute(stm).scalars().all() for task in sorted(tasks, key=lambda x: x.id): obj = TaskReadV2(**task.model_dump()) - _assert(task.model_dump() == obj.dict()) + _assert_equal(task.model_dump(), obj.dict()) print(f"V2 - Task {task.id} validated") # WORKFLOWS V2 @@ -162,7 +162,7 @@ def _assert(stm): project=ProjectReadV2(**workflow.project.model_dump()), task_list=task_list, ) - _assert(workflow.model_dump() == obj.dict()) + # _assert_equal(workflow.model_dump(), obj.dict()) print(f"V2 - Workflow {workflow.id} validated") # DATASETS V2 @@ -173,7 +173,7 @@ def _assert(stm): **dataset.model_dump(), project=ProjectReadV2(**dataset.project.model_dump()), ) - _assert(dataset.model_dump() == obj.dict()) + _assert_equal(dataset.model_dump(), obj.dict()) print(f"V2 - Dataset {dataset.id} validated") # JOBS V2 @@ -181,7 +181,7 @@ def _assert(stm): jobs = db.execute(stm).scalars().all() for job in sorted(jobs, key=lambda x: x.id): obj = JobReadV2(**job.model_dump()) - _assert(job.model_dump() == obj.dict()) + _assert_equal(job.model_dump(), obj.dict()) print(f"V2 - Job {job.id} validated") # COLLECTION STATES V2 @@ -189,5 +189,5 @@ def _assert(stm): states = db.execute(stm).scalars().all() for collection_state in sorted(states, key=lambda x: x.id): obj = CollectionStateV2(**collection_state.model_dump()) - _assert(collection_state.model_dump() == obj.model_dump()) + _assert_equal(collection_state.model_dump(), obj.model_dump()) print(f"V2 - CollectionState {state.id} validated") From f6d88128bf940ec9df5fb823698707d8d0e253b3 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 10:22:09 +0200 Subject: [PATCH 03/20] restore validate_db_data_with_read_schemas --- scripts/validate_db_data_with_read_schemas.py | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/scripts/validate_db_data_with_read_schemas.py b/scripts/validate_db_data_with_read_schemas.py index 4cc52e87e3..5eed05bf50 100644 --- a/scripts/validate_db_data_with_read_schemas.py +++ b/scripts/validate_db_data_with_read_schemas.py @@ -32,12 +32,6 @@ from fractal_server.app.schemas.v2 import WorkflowReadV2 from fractal_server.app.schemas.v2 import WorkflowTaskReadV2 - -def _assert_equal(a, b): - if not a == b: - raise AssertionError(f"{a} != {b}") - - with next(get_sync_db()) as db: # USERS @@ -121,16 +115,14 @@ def _assert_equal(a, b): stm = select(ProjectV2) projects = db.execute(stm).scalars().all() for project in sorted(projects, key=lambda x: x.id): - obj = ProjectReadV2(**project.model_dump()) - _assert_equal(project.model_dump(), obj.dict()) + ProjectReadV2(**project.model_dump()) print(f"V2 - Project {project.id} validated") # TASKS V2 stm = select(TaskV2) tasks = db.execute(stm).scalars().all() for task in sorted(tasks, key=lambda x: x.id): - obj = TaskReadV2(**task.model_dump()) - _assert_equal(task.model_dump(), obj.dict()) + TaskReadV2(**task.model_dump()) print(f"V2 - Task {task.id} validated") # WORKFLOWS V2 @@ -157,37 +149,33 @@ def _assert_equal(a, b): ) ) - obj = WorkflowReadV2( + WorkflowReadV2( **workflow.model_dump(), project=ProjectReadV2(**workflow.project.model_dump()), task_list=task_list, ) - # _assert_equal(workflow.model_dump(), obj.dict()) print(f"V2 - Workflow {workflow.id} validated") # DATASETS V2 stm = select(DatasetV2) datasets = db.execute(stm).scalars().all() for dataset in sorted(datasets, key=lambda x: x.id): - obj = DatasetReadV2( + DatasetReadV2( **dataset.model_dump(), project=ProjectReadV2(**dataset.project.model_dump()), ) - _assert_equal(dataset.model_dump(), obj.dict()) print(f"V2 - Dataset {dataset.id} validated") # JOBS V2 stm = select(JobV2) jobs = db.execute(stm).scalars().all() for job in sorted(jobs, key=lambda x: x.id): - obj = JobReadV2(**job.model_dump()) - _assert_equal(job.model_dump(), obj.dict()) + JobReadV2(**job.model_dump()) print(f"V2 - Job {job.id} validated") # COLLECTION STATES V2 stm = select(CollectionStateV2) states = db.execute(stm).scalars().all() for collection_state in sorted(states, key=lambda x: x.id): - obj = CollectionStateV2(**collection_state.model_dump()) - _assert_equal(collection_state.model_dump(), obj.model_dump()) + CollectionStateV2(**collection_state.model_dump()) print(f"V2 - CollectionState {state.id} validated") From a1137e630fe79b21b1f69260654e4af25d770234 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 10:42:12 +0200 Subject: [PATCH 04/20] remove history from dataset dump --- fractal_server/app/routes/api/v2/submit.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fractal_server/app/routes/api/v2/submit.py b/fractal_server/app/routes/api/v2/submit.py index 780c1e08dd..53363b68d8 100644 --- a/fractal_server/app/routes/api/v2/submit.py +++ b/fractal_server/app/routes/api/v2/submit.py @@ -146,7 +146,9 @@ async def apply_workflow( workflow_id=workflow_id, user_email=user.email, dataset_dump=dict( - **dataset.model_dump(exclude={"images", "timestamp_created"}), + **dataset.model_dump( + exclude={"images", "history", "timestamp_created"} + ), timestamp_created=_encode_as_utc(dataset.timestamp_created), ), workflow_dump=dict( From ff5a255d644ca0a1515f84d24bda7fe4fe4fc49c Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 11:18:44 +0200 Subject: [PATCH 05/20] remove history and images from testing database --- .github/workflows/migrations.yml | 2 +- CHANGELOG.md | 5 + .../clean_db_fractal_2.0.1.sql | 2212 +++++++++++++++++ 3 files changed, 2218 insertions(+), 1 deletion(-) create mode 100644 tests/data/testing_databases/clean_db_fractal_2.0.1.sql diff --git a/.github/workflows/migrations.yml b/.github/workflows/migrations.yml index a462a7bf82..760e55b737 100644 --- a/.github/workflows/migrations.yml +++ b/.github/workflows/migrations.yml @@ -19,7 +19,7 @@ env: # with the SOURCE_VERSION of fractal-server. # Here we test the script that upgrades the DB from SOURCE_VERSION to the #current version. - SOURCE_VERSION: 2.0.0a11 + SOURCE_VERSION: 2.0.1 ROOTDIR: tests/data/testing_databases jobs: diff --git a/CHANGELOG.md b/CHANGELOG.md index ab6807ffc2..b6bb4e3f6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ **Note**: Numbers like (\#123) point to closed Pull Requests on the fractal-server repository. +# 2.0.2 (Unreleased) + +* API: + * Forbid extra arguments in `DumpV2` schemas (\#1445). + # 2.0.1 * Database/API: diff --git a/tests/data/testing_databases/clean_db_fractal_2.0.1.sql b/tests/data/testing_databases/clean_db_fractal_2.0.1.sql new file mode 100644 index 0000000000..90b6cf5f6e --- /dev/null +++ b/tests/data/testing_databases/clean_db_fractal_2.0.1.sql @@ -0,0 +1,2212 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.4 +-- Dumped by pg_dump version 14.8 (Homebrew) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: alembic_version; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.alembic_version ( + version_num character varying(32) NOT NULL +); + + +ALTER TABLE public.alembic_version OWNER TO postgres; + +-- +-- Name: applyworkflow; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.applyworkflow ( + start_timestamp timestamp with time zone NOT NULL, + end_timestamp timestamp with time zone, + worker_init character varying, + id integer NOT NULL, + project_id integer, + input_dataset_id integer, + output_dataset_id integer, + workflow_id integer, + working_dir character varying, + working_dir_user character varying, + status character varying NOT NULL, + log character varying, + first_task_index integer NOT NULL, + last_task_index integer NOT NULL, + workflow_dump json NOT NULL, + user_email character varying NOT NULL, + input_dataset_dump json NOT NULL, + output_dataset_dump json NOT NULL, + slurm_account character varying, + project_dump json NOT NULL +); + + +ALTER TABLE public.applyworkflow OWNER TO postgres; + +-- +-- Name: applyworkflow_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.applyworkflow_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.applyworkflow_id_seq OWNER TO postgres; + +-- +-- Name: applyworkflow_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.applyworkflow_id_seq OWNED BY public.applyworkflow.id; + + +-- +-- Name: collectionstatev2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.collectionstatev2 ( + id integer NOT NULL, + data json, + "timestamp" timestamp with time zone +); + + +ALTER TABLE public.collectionstatev2 OWNER TO postgres; + +-- +-- Name: collectionstatev2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.collectionstatev2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.collectionstatev2_id_seq OWNER TO postgres; + +-- +-- Name: collectionstatev2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.collectionstatev2_id_seq OWNED BY public.collectionstatev2.id; + + +-- +-- Name: dataset; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.dataset ( + meta json, + name character varying NOT NULL, + type character varying, + read_only boolean NOT NULL, + id integer NOT NULL, + project_id integer NOT NULL, + history json DEFAULT '[]'::json NOT NULL, + timestamp_created timestamp with time zone NOT NULL +); + + +ALTER TABLE public.dataset OWNER TO postgres; + +-- +-- Name: dataset_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.dataset_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.dataset_id_seq OWNER TO postgres; + +-- +-- Name: dataset_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.dataset_id_seq OWNED BY public.dataset.id; + + +-- +-- Name: datasetv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.datasetv2 ( + id integer NOT NULL, + name character varying NOT NULL, + project_id integer NOT NULL, + history json DEFAULT '[]'::json NOT NULL, + timestamp_created timestamp with time zone NOT NULL, + zarr_dir character varying NOT NULL, + images json DEFAULT '[]'::json NOT NULL, + filters json DEFAULT '{"attributes": {}, "types": {}}'::json NOT NULL +); + + +ALTER TABLE public.datasetv2 OWNER TO postgres; + +-- +-- Name: datasetv2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.datasetv2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.datasetv2_id_seq OWNER TO postgres; + +-- +-- Name: datasetv2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.datasetv2_id_seq OWNED BY public.datasetv2.id; + + +-- +-- Name: jobv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.jobv2 ( + id integer NOT NULL, + project_id integer, + workflow_id integer, + dataset_id integer, + user_email character varying NOT NULL, + slurm_account character varying, + dataset_dump json NOT NULL, + workflow_dump json NOT NULL, + project_dump json NOT NULL, + worker_init character varying, + working_dir character varying, + working_dir_user character varying, + first_task_index integer NOT NULL, + last_task_index integer NOT NULL, + start_timestamp timestamp with time zone NOT NULL, + end_timestamp timestamp with time zone, + status character varying NOT NULL, + log character varying +); + + +ALTER TABLE public.jobv2 OWNER TO postgres; + +-- +-- Name: jobv2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.jobv2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.jobv2_id_seq OWNER TO postgres; + +-- +-- Name: jobv2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.jobv2_id_seq OWNED BY public.jobv2.id; + + +-- +-- Name: linkuserproject; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.linkuserproject ( + project_id integer NOT NULL, + user_id integer NOT NULL +); + + +ALTER TABLE public.linkuserproject OWNER TO postgres; + +-- +-- Name: linkuserprojectv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.linkuserprojectv2 ( + project_id integer NOT NULL, + user_id integer NOT NULL +); + + +ALTER TABLE public.linkuserprojectv2 OWNER TO postgres; + +-- +-- Name: oauthaccount; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.oauthaccount ( + id integer NOT NULL, + user_id integer NOT NULL, + oauth_name character varying NOT NULL, + access_token character varying NOT NULL, + expires_at integer, + refresh_token character varying, + account_id character varying NOT NULL, + account_email character varying NOT NULL +); + + +ALTER TABLE public.oauthaccount OWNER TO postgres; + +-- +-- Name: oauthaccount_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.oauthaccount_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.oauthaccount_id_seq OWNER TO postgres; + +-- +-- Name: oauthaccount_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.oauthaccount_id_seq OWNED BY public.oauthaccount.id; + + +-- +-- Name: project; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.project ( + name character varying NOT NULL, + read_only boolean NOT NULL, + id integer NOT NULL, + timestamp_created timestamp with time zone NOT NULL +); + + +ALTER TABLE public.project OWNER TO postgres; + +-- +-- Name: project_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.project_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.project_id_seq OWNER TO postgres; + +-- +-- Name: project_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.project_id_seq OWNED BY public.project.id; + + +-- +-- Name: projectv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.projectv2 ( + id integer NOT NULL, + name character varying NOT NULL, + timestamp_created timestamp with time zone NOT NULL +); + + +ALTER TABLE public.projectv2 OWNER TO postgres; + +-- +-- Name: projectv2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.projectv2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.projectv2_id_seq OWNER TO postgres; + +-- +-- Name: projectv2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.projectv2_id_seq OWNED BY public.projectv2.id; + + +-- +-- Name: resource; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.resource ( + path character varying NOT NULL, + id integer NOT NULL, + dataset_id integer NOT NULL +); + + +ALTER TABLE public.resource OWNER TO postgres; + +-- +-- Name: resource_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.resource_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.resource_id_seq OWNER TO postgres; + +-- +-- Name: resource_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.resource_id_seq OWNED BY public.resource.id; + + +-- +-- Name: state; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.state ( + data json, + "timestamp" timestamp with time zone, + id integer NOT NULL +); + + +ALTER TABLE public.state OWNER TO postgres; + +-- +-- Name: state_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.state_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.state_id_seq OWNER TO postgres; + +-- +-- Name: state_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.state_id_seq OWNED BY public.state.id; + + +-- +-- Name: task; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.task ( + meta json, + source character varying NOT NULL, + id integer NOT NULL, + name character varying NOT NULL, + command character varying NOT NULL, + input_type character varying NOT NULL, + output_type character varying NOT NULL, + owner character varying, + version character varying, + args_schema json, + args_schema_version character varying, + docs_info character varying, + docs_link character varying, + is_v2_compatible boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.task OWNER TO postgres; + +-- +-- Name: task_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.task_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.task_id_seq OWNER TO postgres; + +-- +-- Name: task_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.task_id_seq OWNED BY public.task.id; + + +-- +-- Name: taskv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.taskv2 ( + id integer NOT NULL, + name character varying NOT NULL, + type character varying NOT NULL, + command_non_parallel character varying, + command_parallel character varying, + source character varying NOT NULL, + meta_non_parallel json DEFAULT '{}'::json NOT NULL, + meta_parallel json DEFAULT '{}'::json NOT NULL, + owner character varying, + version character varying, + args_schema_non_parallel json, + args_schema_parallel json, + args_schema_version character varying, + docs_info character varying, + docs_link character varying, + input_types json, + output_types json +); + + +ALTER TABLE public.taskv2 OWNER TO postgres; + +-- +-- Name: taskv2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.taskv2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.taskv2_id_seq OWNER TO postgres; + +-- +-- Name: taskv2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.taskv2_id_seq OWNED BY public.taskv2.id; + + +-- +-- Name: user_oauth; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.user_oauth ( + id integer NOT NULL, + email character varying NOT NULL, + hashed_password character varying NOT NULL, + is_active boolean NOT NULL, + is_superuser boolean NOT NULL, + is_verified boolean NOT NULL, + slurm_user character varying, + cache_dir character varying, + username character varying, + slurm_accounts json DEFAULT '[]'::json NOT NULL +); + + +ALTER TABLE public.user_oauth OWNER TO postgres; + +-- +-- Name: user_oauth_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.user_oauth_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.user_oauth_id_seq OWNER TO postgres; + +-- +-- Name: user_oauth_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.user_oauth_id_seq OWNED BY public.user_oauth.id; + + +-- +-- Name: workflow; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.workflow ( + name character varying NOT NULL, + id integer NOT NULL, + project_id integer NOT NULL, + timestamp_created timestamp with time zone NOT NULL +); + + +ALTER TABLE public.workflow OWNER TO postgres; + +-- +-- Name: workflow_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.workflow_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.workflow_id_seq OWNER TO postgres; + +-- +-- Name: workflow_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.workflow_id_seq OWNED BY public.workflow.id; + + +-- +-- Name: workflowtask; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.workflowtask ( + meta json, + args json, + id integer NOT NULL, + workflow_id integer NOT NULL, + task_id integer NOT NULL, + "order" integer +); + + +ALTER TABLE public.workflowtask OWNER TO postgres; + +-- +-- Name: workflowtask_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.workflowtask_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.workflowtask_id_seq OWNER TO postgres; + +-- +-- Name: workflowtask_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.workflowtask_id_seq OWNED BY public.workflowtask.id; + + +-- +-- Name: workflowtaskv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.workflowtaskv2 ( + id integer NOT NULL, + workflow_id integer NOT NULL, + "order" integer, + meta_parallel json, + meta_non_parallel json, + args_parallel json, + args_non_parallel json, + input_filters json DEFAULT '{"attributes": {}, "types": {}}'::json NOT NULL, + is_legacy_task boolean NOT NULL, + task_type character varying NOT NULL, + task_id integer, + task_legacy_id integer +); + + +ALTER TABLE public.workflowtaskv2 OWNER TO postgres; + +-- +-- Name: workflowtaskv2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.workflowtaskv2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.workflowtaskv2_id_seq OWNER TO postgres; + +-- +-- Name: workflowtaskv2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.workflowtaskv2_id_seq OWNED BY public.workflowtaskv2.id; + + +-- +-- Name: workflowv2; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.workflowv2 ( + id integer NOT NULL, + name character varying NOT NULL, + project_id integer NOT NULL, + timestamp_created timestamp with time zone NOT NULL +); + + +ALTER TABLE public.workflowv2 OWNER TO postgres; + +-- +-- Name: workflowv2_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.workflowv2_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.workflowv2_id_seq OWNER TO postgres; + +-- +-- Name: workflowv2_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.workflowv2_id_seq OWNED BY public.workflowv2.id; + + +-- +-- Name: applyworkflow id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.applyworkflow ALTER COLUMN id SET DEFAULT nextval('public.applyworkflow_id_seq'::regclass); + + +-- +-- Name: collectionstatev2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.collectionstatev2 ALTER COLUMN id SET DEFAULT nextval('public.collectionstatev2_id_seq'::regclass); + + +-- +-- Name: dataset id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.dataset ALTER COLUMN id SET DEFAULT nextval('public.dataset_id_seq'::regclass); + + +-- +-- Name: datasetv2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.datasetv2 ALTER COLUMN id SET DEFAULT nextval('public.datasetv2_id_seq'::regclass); + + +-- +-- Name: jobv2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.jobv2 ALTER COLUMN id SET DEFAULT nextval('public.jobv2_id_seq'::regclass); + + +-- +-- Name: oauthaccount id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.oauthaccount ALTER COLUMN id SET DEFAULT nextval('public.oauthaccount_id_seq'::regclass); + + +-- +-- Name: project id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.project ALTER COLUMN id SET DEFAULT nextval('public.project_id_seq'::regclass); + + +-- +-- Name: projectv2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.projectv2 ALTER COLUMN id SET DEFAULT nextval('public.projectv2_id_seq'::regclass); + + +-- +-- Name: resource id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.resource ALTER COLUMN id SET DEFAULT nextval('public.resource_id_seq'::regclass); + + +-- +-- Name: state id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.state ALTER COLUMN id SET DEFAULT nextval('public.state_id_seq'::regclass); + + +-- +-- Name: task id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.task ALTER COLUMN id SET DEFAULT nextval('public.task_id_seq'::regclass); + + +-- +-- Name: taskv2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.taskv2 ALTER COLUMN id SET DEFAULT nextval('public.taskv2_id_seq'::regclass); + + +-- +-- Name: user_oauth id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.user_oauth ALTER COLUMN id SET DEFAULT nextval('public.user_oauth_id_seq'::regclass); + + +-- +-- Name: workflow id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflow ALTER COLUMN id SET DEFAULT nextval('public.workflow_id_seq'::regclass); + + +-- +-- Name: workflowtask id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtask ALTER COLUMN id SET DEFAULT nextval('public.workflowtask_id_seq'::regclass); + + +-- +-- Name: workflowtaskv2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtaskv2 ALTER COLUMN id SET DEFAULT nextval('public.workflowtaskv2_id_seq'::regclass); + + +-- +-- Name: workflowv2 id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowv2 ALTER COLUMN id SET DEFAULT nextval('public.workflowv2_id_seq'::regclass); + + +-- +-- Data for Name: alembic_version; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.alembic_version (version_num) FROM stdin; +5bf02391cfef +\. + + +-- +-- Data for Name: applyworkflow; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.applyworkflow (start_timestamp, end_timestamp, worker_init, id, project_id, input_dataset_id, output_dataset_id, workflow_id, working_dir, working_dir_user, status, log, first_task_index, last_task_index, workflow_dump, user_email, input_dataset_dump, output_dataset_dump, slurm_account, project_dump) FROM stdin; +2023-06-27 18:47:03.587612+02 2023-06-27 18:47:38.194624+02 \N 5 5 9 10 5 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow 20230627_MD_Parsing_2D_Test1", "project_id": 5, "id": 5, "task_list": [{"id": 26, "args": {"barcode": "example-barcode", "mode": "top-level", "num_levels": 5, "order_name": "example-order", "overwrite": true, "zarr_name": "Plate"}, "task_id": 9, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 5, "order": 0, "task": {"source": "pip_local:fractal_faim_hcs:0.1.dev27+g1458b59:::create_ome-zarr_md", "name": "Create OME-Zarr MD", "args_schema": {"additionalProperties": false, "properties": {"barcode": {"default": "example-barcode", "description": "Barcode of the plate", "title": "Barcode", "type": "string"}, "input_paths": {"description": "List of paths to the input files (Fractal managed)", "items": {"type": "string"}, "title": "Input Paths", "type": "array"}, "metadata": {"description": "Metadata dictionary (Fractal managed)", "title": "Metadata", "type": "object"}, "mode": {"default": "all", "description": "Mode can be 3 values: \\"z-steps\\" (only parse the 3D data), \\"top-level\\" (only parse the 2D data), \\"all\\" (parse both)", "title": "Mode", "type": "string"}, "num_levels": {"default": 5, "description": "Number of levels to generate in the zarr file", "title": "Num Levels"}, "order_name": {"default": "example-order", "description": "Name of the order", "title": "Order Name", "type": "string"}, "output_path": {"description": "Path to the output file (Fractal managed)", "title": "Output Path", "type": "string"}, "overwrite": {"default": true, "description": "Whether to overwrite the zarr file if it already exists", "title": "Overwrite", "type": "boolean"}, "zarr_name": {"default": "Plate", "description": "Name of the zarr plate file that will be created", "title": "Zarr Name", "type": "string"}}, "required": ["input_paths", "output_path", "metadata"], "title": "CreateOmeZarrMd", "type": "object"}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 9, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.1.0", "docs_link": null}}, {"id": 27, "args": null, "task_id": 10, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 5, "order": 1, "task": {"source": "pip_local:fractal_faim_hcs:0.1.dev27+g1458b59:::convert_md_to_ome-zarr", "name": "Convert MD to OME-Zarr", "args_schema": {"additionalProperties": false, "properties": {"component": {"description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)", "title": "Component", "type": "string"}, "input_paths": {"description": "List of paths to the input files (Fractal managed)", "items": {"type": "string"}, "title": "Input Paths", "type": "array"}, "metadata": {"description": "Metadata dictionary (Fractal managed)", "title": "Metadata", "type": "object"}, "output_path": {"description": "Path to the output file (Fractal managed)", "title": "Output Path", "type": "string"}}, "required": ["input_paths", "output_path", "component", "metadata"], "title": "MdToOmeZarr", "type": "object"}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 10, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.1.0", "docs_link": null}}, {"id": 28, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 600, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"label": "Maximum-Projection_DAPI"}, "output_label_name": "organoids"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 5, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 29, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 5, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 18:47:03.587612+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 9, "history": [], "name": "input-ds-20230627_MD_Parsing_2D_Test1", "read_only": true, "project_id": 5, "resource_list": [{"dataset_id": 9, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 9}], "timestamp_created": "2023-06-27 18:47:03.587612+02:00"} {"meta": {"plate": ["Plate.zarr"], "well": ["Plate.zarr/C/3/", "Plate.zarr/F/3/"], "image": ["Plate.zarr/C/3/0/", "Plate.zarr/F/3/0/"], "num_levels": 5, "coarsening_xy": 2, "channels": ["w1", "w2"], "mode": "top-level", "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 10, "history": [], "name": "output-ds-20230627_MD_Parsing_2D_Test1", "read_only": false, "project_id": 5, "resource_list": [{"dataset_id": 10, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 10}], "timestamp_created": "2023-06-27 18:47:03.587612+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T16:47:03.587612+00:00", "name": "proj-20230627_MD_Parsing_2D_Test1", "id": 5} +2023-09-14 11:27:21.751354+02 2023-09-14 11:27:27.060242+02 \N 86 35 85 85 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 2 2 {"name": "Workflow 2D_to_3D_workflow_1", "id": 40, "project_id": 35, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 85, "history": [], "name": "test_output_3", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 85, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 95}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 85, "history": [], "name": "test_output_3", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 85, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 95}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 11:25:48.100079+02 2023-09-14 11:26:04.124644+02 \N 85 35 81 85 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 2 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 81, "history": [], "name": "input-ds-2D_to_3D_workflow_1", "read_only": true, "project_id": 35, "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 85, "history": [], "name": "test_output_3", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 85, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 95}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 09:46:24.672629+02 2023-09-14 09:46:27.908743+02 \N 67 29 69 70 34 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 6 {"name": "Workflow multiplex-2", "project_id": 29, "id": 34, "task_list": [{"id": 190, "args": {}, "task_id": 29, "meta": {"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000}, "workflow_id": 34, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 29, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 191, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 34, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 192, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 34, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 193, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 34, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 194, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"}, "task_id": 41, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 34, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 41, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}, {"id": 195, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0}, "task_id": 42, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 34, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task does not use the metadata."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 42, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}, {"id": 196, "args": {"reference_cycle": "0", "overwrite_input": true, "registered_roi_table": "registered_FOV_ROI_table"}, "task_id": 43, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 34, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::apply_registration_to_image", "name": "Apply Registration to Image", "args_schema": {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server). `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Apply registration to images by using a registered ROI table\\n\\nThis task consists of 4 parts:\\n\\n1. Mask all regions in images that are not available in the\\nregistered ROI table and store each cycle aligned to the\\nreference_cycle (by looping over ROIs).\\n2. Do the same for all label images.\\n3. Copy all tables from the non-aligned image to the aligned image\\n(currently only works well if the only tables are well & FOV ROI tables\\n(registered and original). Not implemented for measurement tables and\\nother ROI tables).\\n4. Clean up: Delete the old, non-aligned image and rename the new,\\naligned image to take over its place.\\n\\nParallelization level: image", "id": 43, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image"}}, {"id": 390, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true}, "task_id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 34, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}], "timestamp_created": "2023-09-14 09:46:24.672629+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 69, "history": [], "name": "input-ds-multiplex-2", "read_only": true, "project_id": 29, "resource_list": [{"dataset_id": 69, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 74}, {"dataset_id": 69, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 75}, {"dataset_id": 69, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 76}], "timestamp_created": "2023-09-14 09:46:24.672629+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 70, "history": [], "name": "output-ds-multiplex-2", "read_only": false, "project_id": 29, "resource_list": [{"dataset_id": 70, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 77}], "timestamp_created": "2023-09-14 09:46:24.672629+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:46:24.672629+00:00", "name": "proj-multiplex-2", "id": 29} +2023-09-14 11:14:35.68601+02 2023-09-14 11:14:42.162595+02 \N 84 35 84 84 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 1 1 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 84, "history": [], "name": "test_output_2", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 84, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 94}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 84, "history": [], "name": "test_output_2", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 84, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 94}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 11:11:07.618557+02 2023-09-14 11:11:17.372303+02 \N 82 35 81 84 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 1 {"name": "Workflow 2D_to_3D_workflow_1", "id": 40, "project_id": 35, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"id": 81, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 35, "history": [], "read_only": true, "name": "input-ds-2D_to_3D_workflow_1", "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"id": 84, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 35, "history": [], "read_only": false, "name": "test_output_2", "resource_list": [{"dataset_id": 84, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 94}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 09:44:13.313113+02 2023-09-14 09:55:09.100261+02 \N 65 27 65 66 32 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 11 {"name": "Workflow cardio-2x2-1", "project_id": 27, "id": 32, "task_list": [{"id": 166, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"wavelength_id": "A01_C01", "color": "00FFFF", "label": "DAPI", "window": {"start": 0, "end": 700}}, {"wavelength_id": "A01_C02", "color": "FF00FF", "label": "nanog", "window": {"start": 0, "end": 180}}, {"wavelength_id": "A02_C03", "color": "FFFF00", "label": "Lamin B1", "window": {"start": 0, "end": 1500}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 32, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 167, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 32, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 168, "args": {}, "task_id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 32, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:illumination_correction", "name": "Illumination correction", "args_schema": {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 169, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 2, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 32, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 170, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 32, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 171, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 32, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 172, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 32, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 173, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 0, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 32, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 174, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 32, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 175, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 32, "order": 9, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 176, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 32, "order": 10, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 177, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 32, "order": 11, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:44:13.313113+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 65, "history": [], "name": "input-ds-cardio-2x2-1", "read_only": true, "project_id": 27, "resource_list": [{"dataset_id": 65, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 70}], "timestamp_created": "2023-09-14 09:44:13.313113+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 66, "history": [], "name": "output-ds-cardio-2x2-1", "read_only": false, "project_id": 27, "resource_list": [{"dataset_id": 66, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 71}], "timestamp_created": "2023-09-14 09:44:13.313113+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:44:13.313113+00:00", "name": "proj-cardio-2x2-1", "id": 27} +2023-09-14 10:54:34.556432+02 2023-09-14 10:54:58.601312+02 \N 77 26 64 64 31 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 4 5 {"name": "Workflow cardiac-tiny-2", "id": 31, "project_id": 26, "task_list": [{"id": 160, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 31, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 161, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 162, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 31, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 163, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 164, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 31, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 165, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} __UNDEFINED__ {"id": 64, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 26, "history": [], "read_only": false, "name": "output-ds-cardiac-tiny-2", "resource_list": [{"dataset_id": 64, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 69}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} {"id": 64, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 26, "history": [], "read_only": false, "name": "output-ds-cardiac-tiny-2", "resource_list": [{"dataset_id": 64, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 69}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:39:41.581472+00:00", "name": "proj-cardiac-tiny-2", "id": 26} +2023-09-14 11:03:49.533709+02 2023-09-14 11:06:58.423196+02 \N 79 35 81 83 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 8 {"name": "Workflow 2D_to_3D_workflow_1", "id": 40, "project_id": 35, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 81, "history": [], "name": "input-ds-2D_to_3D_workflow_1", "read_only": true, "project_id": 35, "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 83, "history": [], "name": "test_output", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 83, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 93}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 11:10:34.095441+02 2023-09-14 11:10:44.855696+02 \N 81 35 81 84 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 1 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 81, "history": [], "name": "input-ds-2D_to_3D_workflow_1", "read_only": true, "project_id": 35, "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 84, "history": [], "name": "test_output_2", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 84, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 94}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 11:30:09.205978+02 2023-09-14 11:30:36.928271+02 \N 87 26 63 86 31 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-2", "project_id": 26, "id": 31, "task_list": [{"id": 160, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 31, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 161, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 162, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 31, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 163, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 164, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 31, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 165, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 63, "history": [], "name": "input-ds-cardiac-tiny-2", "read_only": true, "project_id": 26, "resource_list": [{"dataset_id": 63, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 68}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 86, "history": [], "name": "output_test1", "read_only": false, "project_id": 26, "resource_list": [{"dataset_id": 86, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 96}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:39:41.581472+00:00", "name": "proj-cardiac-tiny-2", "id": 26} +2023-09-14 11:07:32.486459+02 2023-09-14 11:07:32.603751+02 \N 80 35 83 83 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 8 8 {"name": "Workflow 2D_to_3D_workflow_1", "id": 40, "project_id": 35, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"id": 83, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 35, "history": [], "read_only": false, "name": "test_output", "resource_list": [{"dataset_id": 83, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 93}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"id": 83, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 35, "history": [], "read_only": false, "name": "test_output", "resource_list": [{"dataset_id": 83, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 93}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-10-20 12:00:30.51846+02 2023-10-20 12:01:42.197392+02 \N 137 53 126 127 64 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-1312", "project_id": 53, "id": 64, "task_list": [{"id": 435, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 64, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 436, "args": {"overwrite": false}, "task_id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 437, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 88, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 64, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 88, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 438, "args": {"overwrite": false}, "task_id": 89, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 89, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 439, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 64, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 440, "args": {}, "task_id": 92, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 92, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 397, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"}, "task_id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 64, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}, {"id": 441, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0}, "task_id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 64, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 126, "history": [], "name": "input-ds-cardiac-tiny-1312", "read_only": true, "project_id": 53, "resource_list": [{"dataset_id": 126, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 141}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "copy_ome_zarr": {}, "history": []}, "type": "zarr", "id": 127, "history": [], "name": "output-ds-cardiac-tiny-1312", "read_only": false, "project_id": 53, "resource_list": [{"dataset_id": 127, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 142}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} \N {"read_only": false, "timestamp_created": "2023-10-20T10:00:30.518460+00:00", "name": "proj-cardiac-tiny-1312", "id": 53} +2023-10-20 16:33:21.708524+02 2023-10-20 16:33:28.87026+02 \N 138 53 126 127 64 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 6 {"name": "Workflow cardiac-tiny-1312", "project_id": 53, "id": 64, "task_list": [{"id": 435, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 64, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 436, "args": {"overwrite": false}, "task_id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 437, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 88, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 64, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 88, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 438, "args": {"overwrite": false}, "task_id": 89, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 89, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 439, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 64, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 440, "args": {}, "task_id": 92, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 92, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 397, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"}, "task_id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 64, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}, {"id": 441, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0}, "task_id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 64, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 126, "history": [], "name": "input-ds-cardiac-tiny-1312", "read_only": true, "project_id": 53, "resource_list": [{"dataset_id": 126, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 141}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "copy_ome_zarr": {}, "history": []}, "type": "zarr", "id": 127, "history": [], "name": "output-ds-cardiac-tiny-1312", "read_only": false, "project_id": 53, "resource_list": [{"dataset_id": 127, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 142}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} \N {"read_only": false, "timestamp_created": "2023-10-20T10:00:30.518460+00:00", "name": "proj-cardiac-tiny-1312", "id": 53} +2023-11-01 09:16:36.920775+01 2023-11-01 09:18:09.062128+01 \N 161 53 126 127 64 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 7 {"name": "Workflow cardiac-tiny-1312", "id": 64, "project_id": 53, "task_list": [{"id": 435, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 64, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 436, "args": {"overwrite": false}, "task_id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 437, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 88, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 64, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 88, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 438, "args": {"overwrite": false}, "task_id": 89, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 89, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 439, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 64, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 440, "args": {}, "task_id": 92, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 64, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 92, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 397, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"}, "task_id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 64, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}, {"id": 441, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0}, "task_id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 64, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} __UNDEFINED__ {"id": 126, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 53, "history": [], "read_only": true, "name": "input-ds-cardiac-tiny-1312", "resource_list": [{"dataset_id": 126, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 141}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} {"id": 127, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "copy_ome_zarr": {}, "history": []}, "type": "zarr", "project_id": 53, "history": [], "read_only": false, "name": "output-ds-cardiac-tiny-1312", "resource_list": [{"dataset_id": 127, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 142}], "timestamp_created": "2023-10-20 12:00:30.518460+02:00"} \N {"read_only": false, "timestamp_created": "2023-10-20T10:00:30.518460+00:00", "name": "proj-cardiac-tiny-1312", "id": 53} +2023-09-15 19:00:51.168524+02 2023-09-15 19:01:18.164333+02 \N 92 24 59 88 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 59, "history": [], "name": "input-ds-cardiac-tiny-1", "read_only": true, "project_id": 24, "resource_list": [{"dataset_id": 59, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 64}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 88, "history": [], "name": "Output2", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 88, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 98}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-10-25 14:45:26.35285+02 2023-10-25 14:46:13.185357+02 \N 151 56 130 131 66 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 4 {"name": "4i per well workflow", "project_id": 56, "id": 66, "task_list": [{"id": 406, "args": {}, "task_id": 80, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 66, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create OME-NGFF structure and metadata to host a multiplexing dataset.\\n\\nThis task takes a set of image folders (i.e. different acquisition cycles)\\nand build the internal structure and metadata of a OME-NGFF zarr group,\\nwithout actually loading/writing the image data.\\n\\nEach element in input_paths should be treated as a different acquisition.", "id": 80, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr_multiplex/#fractal_tasks_core.tasks.create_ome_zarr_multiplex.create_ome_zarr_multiplex"}}, {"id": 407, "args": {"overwrite": false}, "task_id": 74, "meta": {"cpus_per_task": 1, "mem": 60000, "parallelization_level": "image"}, "workflow_id": 66, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 74, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 408, "args": {"roi_table": "well_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"}, "task_id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 66, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 81, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}, {"id": 409, "args": {"roi_table": "well_ROI_table", "reference_cycle": 0}, "task_id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 66, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}, {"id": 410, "args": {"reference_cycle": "0", "overwrite_input": true, "registered_roi_table": "registered_well_ROI_table"}, "task_id": 83, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 66, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_image", "name": "Apply Registration to Image", "args_schema": {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Apply registration to images by using a registered ROI table\\n\\nThis task consists of 4 parts:\\n\\n1. Mask all regions in images that are not available in the\\nregistered ROI table and store each cycle aligned to the\\nreference_cycle (by looping over ROIs).\\n2. Do the same for all label images.\\n3. Copy all tables from the non-aligned image to the aligned image\\n(currently only works well if the only tables are well & FOV ROI tables\\n(registered and original). Not implemented for measurement tables and\\nother ROI tables).\\n4. Clean up: Delete the old, non-aligned image and rename the new,\\naligned image to take over its place.\\n\\nParallelization level: image", "id": 83, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image"}}, {"id": 411, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 150, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"label": "DAPI1"}, "output_label_name": "nuclei"}, "task_id": 77, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 66, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 77, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 412, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "nuclei_measurement", "input_channels": {"C01": {"label": "DAPI1"}, "C03": {"wavelength_id": "A03_C03"}, "C04": {"wavelength_id": "A01_C04"}, "C02": {"wavelength_id": "A02_C02"}}}, "task_id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 66, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Measurements of intensities and morphologies\\n\\nWrapper task for scmultiplex measurements for Fractal to generate\\nmeasurements of intensities and morphologies", "id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.1", "docs_link": "https://github.com/fmi-basel/gliberal-scMultipleX"}}], "timestamp_created": "2023-10-25 14:45:26.352850+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 130, "history": [], "name": "InputDs", "read_only": true, "project_id": 56, "resource_list": [{"dataset_id": 130, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 150}, {"dataset_id": 130, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 151}, {"dataset_id": 130, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 152}, {"dataset_id": 130, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 153}, {"dataset_id": 130, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 154}, {"dataset_id": 130, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 155}], "timestamp_created": "2023-10-25 14:45:26.352850+02:00"} {"meta": {"plate": ["AssayPlate_Greiner_#655090.zarr"], "well": ["AssayPlate_Greiner_#655090.zarr/C/02"], "image": ["AssayPlate_Greiner_#655090.zarr/C/02/0", "AssayPlate_Greiner_#655090.zarr/C/02/1", "AssayPlate_Greiner_#655090.zarr/C/02/2", "AssayPlate_Greiner_#655090.zarr/C/02/3", "AssayPlate_Greiner_#655090.zarr/C/02/4", "AssayPlate_Greiner_#655090.zarr/C/02/5"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": ["*_C02_*", "*F001*"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 131, "history": [], "name": "OutputDs", "read_only": false, "project_id": 56, "resource_list": [{"dataset_id": 131, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 156}], "timestamp_created": "2023-10-25 14:45:26.352850+02:00"} \N {"read_only": false, "timestamp_created": "2023-10-25T12:45:26.352850+00:00", "name": "Sana multiplexing test", "id": 56} +2023-11-06 12:27:07.855222+01 2023-11-06 12:29:31.034416+01 \N 162 1 1 2 63 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 8 {"name": "2D_to_3D", "project_id": 1, "id": 63, "task_list": [{"id": 380, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 60, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 63, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 60, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 381, "args": {"overwrite": false}, "task_id": 61, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 63, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 61, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 382, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 62, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 63, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 62, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 383, "args": {"overwrite": false}, "task_id": 63, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 63, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 63, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 384, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 300, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "organoids", "output_ROI_table": "organoid_ROI_table"}, "task_id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 63, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 385, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "organoids", "output_table_name": "organoids_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}}, "task_id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 63, "order": 5, "task": {"source": "pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Measurements of intensities and morphologies\\n\\nWrapper task for scmultiplex measurements for Fractal to generate\\nmeasurements of intensities and morphologies", "id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.1", "docs_link": "https://github.com/fmi-basel/gliberal-scMultipleX"}}, {"id": 386, "args": {"level": 0, "suffix": "mip", "overwrite": false, "label_name": "organoids", "ROI_tables_to_copy": ["organoid_ROI_table"]}, "task_id": 71, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 63, "order": 6, "task": {"source": "__REDACTED_SOURCE_71__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite existing label and ROI tables in the 3D OME-Zarr"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name"], "additionalProperties": false}, "input_type": "zarr", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 71, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.1.0", "docs_link": null}}, {"id": 387, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 72, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 63, "order": 7, "task": {"source": "__REDACTED_SOURCE_72__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 72, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.1.0", "docs_link": null}}, {"id": 388, "args": {"input_ROI_table": "organoid_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 63, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 1, "history": [], "name": "input-ds-cardiac-test-4", "read_only": true, "project_id": 1, "resource_list": [{"dataset_id": 1, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 1}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 2, "history": [], "name": "output-ds-cardiac-test-4", "read_only": false, "project_id": 1, "resource_list": [{"dataset_id": 2, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 2}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:54:31.667519+00:00", "name": "proj-cardiac-test-4", "id": 1} +2023-08-07 18:08:41.098333+02 2023-08-07 18:08:47.472805+02 \N 36 15 38 39 15 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow multiplex-3", "project_id": 15, "id": 15, "task_list": [{"id": 80, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000}, "workflow_id": 15, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 81, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 15, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 82, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 15, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 83, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 15, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-08-07 18:08:41.098333+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 38, "history": [], "name": "input-ds-multiplex-3", "read_only": true, "project_id": 15, "resource_list": [{"dataset_id": 38, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 34}, {"dataset_id": 38, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 35}, {"dataset_id": 38, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 36}], "timestamp_created": "2023-08-07 18:08:41.098333+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 39, "history": [], "name": "output-ds-multiplex-3", "read_only": false, "project_id": 15, "resource_list": [{"dataset_id": 39, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 37}], "timestamp_created": "2023-08-07 18:08:41.098333+02:00"} \N {"read_only": false, "timestamp_created": "2023-08-07T16:08:41.098333+00:00", "name": "proj-multiplex-3", "id": 15} +2023-09-15 19:09:09.291625+02 2023-09-15 19:09:35.485664+02 \N 94 24 88 88 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 4 5 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 88, "history": [], "name": "Output2", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 88, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 98}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 88, "history": [], "name": "Output2", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 88, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 98}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-07-07 10:20:02.558858+02 2023-07-07 10:20:56.083923+02 \N 8 2 3 13 2 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-5", "project_id": 2, "id": 2, "task_list": [{"id": 7, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 2, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 8, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 9, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 2, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 10, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 11, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 12, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 38, "args": {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements"}, "task_id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 2, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.0", "docs_link": null}}, {"id": 71, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 3, "history": [], "name": "input-ds-cardiac-test-5", "read_only": true, "project_id": 2, "resource_list": [{"dataset_id": 3, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 3}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 13, "history": [], "name": "Output-DS2", "read_only": false, "project_id": 2, "resource_list": [{"dataset_id": 13, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 13}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:55:23.122511+00:00", "name": "proj-cardiac-test-5", "id": 2} +2023-07-07 11:37:52.054173+02 2023-07-07 11:37:58.449212+02 \N 10 2 3 13 2 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-5", "id": 2, "project_id": 2, "task_list": [{"id": 7, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 2, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 8, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 9, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 2, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 10, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 11, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 12, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 38, "args": {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements"}, "task_id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 2, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.0", "docs_link": null}}, {"id": 71, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} __UNDEFINED__ {"id": 3, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 2, "history": [], "read_only": true, "name": "input-ds-cardiac-test-5", "resource_list": [{"dataset_id": 3, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 3}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} {"id": 13, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 2, "history": [], "read_only": false, "name": "Output-DS2", "resource_list": [{"dataset_id": 13, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 13}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:55:23.122511+00:00", "name": "proj-cardiac-test-5", "id": 2} +2023-09-12 18:10:25.368828+02 2023-09-12 18:10:50.593032+02 \N 57 \N \N \N \N /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow_011a2", "project_id": 22, "id": 26, "task_list": [{"id": 132, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": false, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 26, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 133, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 26, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 134, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": false}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 26, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 135, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 26, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 136, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 26, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2000-01-01 00:00:00+00:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 55, "history": [], "name": "InputDs", "read_only": false, "project_id": 22, "resource_list": [{"dataset_id": 55, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 60}], "timestamp_created": "2000-01-01 00:00:00+00:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 56, "history": [], "name": "OutputDs", "read_only": false, "project_id": 22, "resource_list": [{"dataset_id": 56, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 61}], "timestamp_created": "2000-01-01 00:00:00+00:00"} \N {"id": -1, "name": "__UNDEFINED__", "read_only": true, "timestamp_created": "2000-01-01 00:00:00+00:00"} +2023-09-12 18:17:20.142737+02 2023-09-12 18:18:09.330056+02 \N 58 \N \N \N \N /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow_011a2", "id": 26, "project_id": 22, "task_list": [{"id": 132, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": false, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 26, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 133, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 26, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 134, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": false}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 26, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 135, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 26, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 136, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 26, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2000-01-01 00:00:00+00:00"} __UNDEFINED__ {"id": 55, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 22, "history": [], "read_only": false, "name": "InputDs", "resource_list": [{"dataset_id": 55, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 60}], "timestamp_created": "2000-01-01 00:00:00+00:00"} {"id": 56, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 22, "history": [], "read_only": false, "name": "OutputDs", "resource_list": [{"dataset_id": 56, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 61}], "timestamp_created": "2000-01-01 00:00:00+00:00"} \N {"id": -1, "name": "__UNDEFINED__", "read_only": true, "timestamp_created": "2000-01-01 00:00:00+00:00"} +2023-08-10 16:36:11.077806+02 2023-08-10 16:39:23.474712+02 \N 40 16 40 47 16 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow multiplex-1", "project_id": 16, "id": 16, "task_list": [{"id": 84, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000}, "workflow_id": 16, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 85, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 16, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 86, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 16, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 87, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 16, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 88, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_ROI_table": "nuclei_ROI_table", "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 16, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 40, "history": [], "name": "input-ds-multiplex-1", "read_only": true, "project_id": 16, "resource_list": [{"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 38}, {"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 39}, {"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 40}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/2", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/2"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "png", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 47, "history": [], "name": "output_test2", "read_only": false, "project_id": 16, "resource_list": [{"dataset_id": 47, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 47}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} \N {"read_only": false, "timestamp_created": "2023-08-07T16:12:46.178079+00:00", "name": "proj-multiplex-1", "id": 16} +2023-09-06 15:44:28.646941+02 2023-09-06 15:48:00.538662+02 \N 48 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "id": 23, "project_id": 20, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"id": 51, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 20, "history": [], "read_only": true, "name": "InputDs", "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"id": 52, "meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 20, "history": [], "read_only": false, "name": "OutputDs_1", "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-06 16:58:39.973579+02 2023-09-06 18:47:51.775562+02 \N 53 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "id": 23, "project_id": 20, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"id": 51, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 20, "history": [], "read_only": true, "name": "InputDs", "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"id": 52, "meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 20, "history": [], "read_only": false, "name": "OutputDs_1", "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-12 18:00:45.435221+02 2023-09-12 18:01:00.194092+02 \N 56 \N \N \N \N /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Example Workflow", "project_id": 22, "id": 25, "task_list": [{"id": 127, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}]}, "task_id": 14, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 25, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 14, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.1", "docs_link": null}}, {"id": 128, "args": null, "task_id": 15, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 25, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 15, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.1", "docs_link": null}}, {"id": 129, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 16, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 25, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 16, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.1", "docs_link": null}}, {"id": 130, "args": null, "task_id": 17, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 25, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 17, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.1", "docs_link": null}}, {"id": 131, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 18, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 25, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 18, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.1", "docs_link": null}}], "timestamp_created": "2000-01-01 00:00:00+00:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 55, "history": [], "name": "InputDs", "read_only": false, "project_id": 22, "resource_list": [{"dataset_id": 55, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 60}], "timestamp_created": "2000-01-01 00:00:00+00:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 56, "history": [], "name": "OutputDs", "read_only": false, "project_id": 22, "resource_list": [{"dataset_id": 56, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 61}], "timestamp_created": "2000-01-01 00:00:00+00:00"} \N {"id": -1, "name": "__UNDEFINED__", "read_only": true, "timestamp_created": "2000-01-01 00:00:00+00:00"} +2023-09-14 09:30:47.026409+02 2023-09-14 09:30:57.812511+02 \N 62 25 61 62 30 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 1 {"name": "Workflow cardiac-test-partial-2", "project_id": 25, "id": 30, "task_list": [{"id": 154, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 30, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 155, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 30, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 156, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 30, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 157, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 30, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 158, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 30, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 159, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 30, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:30:47.026409+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 61, "history": [], "name": "input-ds-cardiac-test-partial-2", "read_only": true, "project_id": 25, "resource_list": [{"dataset_id": 61, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 66}], "timestamp_created": "2023-09-14 09:30:47.026409+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 62, "history": [], "name": "output-ds-cardiac-test-partial-2", "read_only": false, "project_id": 25, "resource_list": [{"dataset_id": 62, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 67}], "timestamp_created": "2023-09-14 09:30:47.026409+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:30:47.026409+00:00", "name": "proj-cardiac-test-partial-2", "id": 25} +2023-09-14 09:39:41.581472+02 2023-09-14 09:40:26.020163+02 \N 64 26 63 64 31 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-2", "project_id": 26, "id": 31, "task_list": [{"id": 160, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 31, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 161, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 162, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 31, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 163, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 164, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 31, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 165, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 63, "history": [], "name": "input-ds-cardiac-tiny-2", "read_only": true, "project_id": 26, "resource_list": [{"dataset_id": 63, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 68}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 64, "history": [], "name": "output-ds-cardiac-tiny-2", "read_only": false, "project_id": 26, "resource_list": [{"dataset_id": 64, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 69}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:39:41.581472+00:00", "name": "proj-cardiac-tiny-2", "id": 26} +2023-09-14 09:44:44.589979+02 2023-09-14 09:47:01.309232+02 \N 66 28 67 68 33 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 11 {"name": "Workflow cardio-2x2-zenodo-subset-1", "project_id": 28, "id": 33, "task_list": [{"id": 178, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": false, "allowed_channels": [{"wavelength_id": "A01_C01", "color": "00FFFF", "label": "DAPI", "window": {"start": 0, "end": 700}}, {"wavelength_id": "A01_C02", "color": "FF00FF", "label": "nanog", "window": {"start": 0, "end": 180}}, {"wavelength_id": "A02_C03", "color": "FFFF00", "label": "Lamin B1", "window": {"start": 0, "end": 1500}}], "image_glob_patterns": ["*F001*Z0[4,5]*"]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 33, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 179, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 33, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 180, "args": {}, "task_id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 33, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:illumination_correction", "name": "Illumination correction", "args_schema": {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 181, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 2, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 33, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 182, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 33, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 183, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 33, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 184, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 33, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 185, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 0, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 33, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 186, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 33, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 187, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 33, "order": 9, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 188, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 33, "order": 10, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 189, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 33, "order": 11, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:44:44.589979+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 67, "history": [], "name": "input-ds-cardio-2x2-zenodo-subset-1", "read_only": true, "project_id": 28, "resource_list": [{"dataset_id": 67, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 72}], "timestamp_created": "2023-09-14 09:44:44.589979+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": ["*F001*Z0[4,5]*"], "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 68, "history": [], "name": "output-ds-cardio-2x2-zenodo-subset-1", "read_only": false, "project_id": 28, "resource_list": [{"dataset_id": 68, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 73}], "timestamp_created": "2023-09-14 09:44:44.589979+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:44:44.589979+00:00", "name": "proj-cardio-2x2-zenodo-subset-1", "id": 28} +2023-09-14 10:50:29.571391+02 2023-09-14 10:50:29.823188+02 \N 75 35 82 82 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 8 8 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 82, "history": [], "name": "output-ds-2D_to_3D_workflow_1", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 82, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 92}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 82, "history": [], "name": "output-ds-2D_to_3D_workflow_1", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 82, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 92}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-06-27 18:38:30.361417+02 2023-06-27 18:38:35.672146+02 \N 3 3 5 6 3 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow 20230627_MD_Parsing_2D_Test6", "project_id": 3, "id": 3, "task_list": [{"id": 13, "args": {"barcode": "example-barcode2", "mode": "top-level", "num_levels": 5, "order_name": "example-order", "overwrite": true, "zarr_name": "Plate"}, "task_id": 9, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 3, "order": 0, "task": {"source": "pip_local:fractal_faim_hcs:0.1.dev27+g1458b59:::create_ome-zarr_md", "name": "Create OME-Zarr MD", "args_schema": {"additionalProperties": false, "properties": {"barcode": {"default": "example-barcode", "description": "Barcode of the plate", "title": "Barcode", "type": "string"}, "input_paths": {"description": "List of paths to the input files (Fractal managed)", "items": {"type": "string"}, "title": "Input Paths", "type": "array"}, "metadata": {"description": "Metadata dictionary (Fractal managed)", "title": "Metadata", "type": "object"}, "mode": {"default": "all", "description": "Mode can be 3 values: \\"z-steps\\" (only parse the 3D data), \\"top-level\\" (only parse the 2D data), \\"all\\" (parse both)", "title": "Mode", "type": "string"}, "num_levels": {"default": 5, "description": "Number of levels to generate in the zarr file", "title": "Num Levels"}, "order_name": {"default": "example-order", "description": "Name of the order", "title": "Order Name", "type": "string"}, "output_path": {"description": "Path to the output file (Fractal managed)", "title": "Output Path", "type": "string"}, "overwrite": {"default": true, "description": "Whether to overwrite the zarr file if it already exists", "title": "Overwrite", "type": "boolean"}, "zarr_name": {"default": "Plate", "description": "Name of the zarr plate file that will be created", "title": "Zarr Name", "type": "string"}}, "required": ["input_paths", "output_path", "metadata"], "title": "CreateOmeZarrMd", "type": "object"}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 9, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.1.0", "docs_link": null}}, {"id": 14, "args": null, "task_id": 10, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 3, "order": 1, "task": {"source": "pip_local:fractal_faim_hcs:0.1.dev27+g1458b59:::convert_md_to_ome-zarr", "name": "Convert MD to OME-Zarr", "args_schema": {"additionalProperties": false, "properties": {"component": {"description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)", "title": "Component", "type": "string"}, "input_paths": {"description": "List of paths to the input files (Fractal managed)", "items": {"type": "string"}, "title": "Input Paths", "type": "array"}, "metadata": {"description": "Metadata dictionary (Fractal managed)", "title": "Metadata", "type": "object"}, "output_path": {"description": "Path to the output file (Fractal managed)", "title": "Output Path", "type": "string"}}, "required": ["input_paths", "output_path", "component", "metadata"], "title": "MdToOmeZarr", "type": "object"}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 10, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.1.0", "docs_link": null}}, {"id": 15, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 600, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"label": "Maximum-Projection_DAPI"}, "output_label_name": "organoids"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 3, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 16, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 3, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 18:38:30.361417+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 5, "history": [], "name": "input-ds-20230627_MD_Parsing_2D_Test6", "read_only": true, "project_id": 3, "resource_list": [{"dataset_id": 5, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 5}], "timestamp_created": "2023-06-27 18:38:30.361417+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 6, "history": [], "name": "output-ds-20230627_MD_Parsing_2D_Test6", "read_only": false, "project_id": 3, "resource_list": [{"dataset_id": 6, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 6}], "timestamp_created": "2023-06-27 18:38:30.361417+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T16:38:30.361417+00:00", "name": "proj-20230627_MD_Parsing_2D_Test6", "id": 3} +2023-09-15 18:50:26.500258+02 2023-09-15 18:51:54.090528+02 \N 89 24 59 87 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 59, "history": [], "name": "input-ds-cardiac-tiny-1", "read_only": true, "project_id": 24, "resource_list": [{"dataset_id": 59, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 64}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 87, "history": [], "name": "Output1", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 87, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 97}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-09-15 18:52:13.581367+02 2023-09-15 18:52:37.21403+02 \N 90 24 59 87 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 3 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 59, "history": [], "name": "input-ds-cardiac-tiny-1", "read_only": true, "project_id": 24, "resource_list": [{"dataset_id": 59, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 64}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 87, "history": [], "name": "Output1", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 87, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 97}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-06-27 17:54:31.667519+02 2023-06-27 17:54:45.157718+02 \N 1 1 1 2 1 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-4", "project_id": 1, "id": 1, "task_list": [{"id": 1, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 1, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 2, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 1, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 3, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 2, "mem": 2000}, "workflow_id": 1, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 4, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 1, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 5, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 1, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 6, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 1, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 443, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 2}, "task_id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 1, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}, {"id": 444, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.6, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"label": "DAPI"}}, "task_id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 1, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 468, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2}, "task_id": 94, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 1, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 94, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 1, "history": [], "name": "input-ds-cardiac-test-4", "read_only": true, "project_id": 1, "resource_list": [{"dataset_id": 1, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 1}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 2, "history": [], "name": "output-ds-cardiac-test-4", "read_only": false, "project_id": 1, "resource_list": [{"dataset_id": 2, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 2}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:54:31.667519+00:00", "name": "proj-cardiac-test-4", "id": 1} +2023-06-27 17:55:23.122511+02 2023-06-27 17:56:14.86001+02 \N 2 2 3 4 2 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-5", "project_id": 2, "id": 2, "task_list": [{"id": 7, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 2, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 8, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 9, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 2, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 10, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 11, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 12, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 38, "args": {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements"}, "task_id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 2, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.0", "docs_link": null}}, {"id": 71, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 3, "history": [], "name": "input-ds-cardiac-test-5", "read_only": true, "project_id": 2, "resource_list": [{"dataset_id": 3, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 3}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 4, "history": [], "name": "output-ds-cardiac-test-5", "read_only": false, "project_id": 2, "resource_list": [{"dataset_id": 4, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 4}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:55:23.122511+00:00", "name": "proj-cardiac-test-5", "id": 2} +2023-09-29 17:33:51.13079+02 2023-09-29 17:34:45.260671+02 \N 123 49 119 120 55 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 6 {"name": "Workflow cardiac-tiny-2", "project_id": 49, "id": 55, "task_list": [{"id": 336, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]}, "task_id": 33, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 55, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 33, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 337, "args": {"overwrite": false}, "task_id": 34, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 55, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 34, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 338, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 35, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 55, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 35, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 339, "args": {"overwrite": false}, "task_id": 36, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 55, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 36, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 340, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 37, "meta": {"cpus_per_task": 4, "mem": 32000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 55, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 37, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 341, "args": {}, "task_id": 39, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 55, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 39, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 342, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "nuclei_scmultiplex_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}}, "task_id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 55, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Measurements of intensities and morphologies\\n\\nWrapper task for scmultiplex measurements for Fractal to generate\\nmeasurements of intensities and morphologies", "id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.1", "docs_link": "https://github.com/fmi-basel/gliberal-scMultipleX"}}], "timestamp_created": "2023-09-29 17:29:54.377672+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 119, "history": [], "name": "InputDs", "read_only": false, "project_id": 49, "resource_list": [{"dataset_id": 119, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 133}], "timestamp_created": "2023-09-29 17:29:54.377672+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "scMultipleX Measurements: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 120, "history": [], "name": "OutputDs", "read_only": false, "project_id": 49, "resource_list": [{"dataset_id": 120, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 134}], "timestamp_created": "2023-09-29 17:29:54.377672+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-29T15:29:54.377672+00:00", "name": "TestScmultiplex", "id": 49} +2023-06-27 18:38:56.714489+02 2023-06-27 18:42:04.802612+02 \N 4 4 7 8 4 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow 2D_to_3D_workflow_5", "project_id": 4, "id": 4, "task_list": [{"id": 17, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 4, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 18, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 4, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 19, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 4, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 20, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 4, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 21, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 4, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 22, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 4, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 23, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 4, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 24, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 4, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 25, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 4, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 18:38:56.714489+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 7, "history": [], "name": "input-ds-2D_to_3D_workflow_5", "read_only": true, "project_id": 4, "resource_list": [{"dataset_id": 7, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 7}], "timestamp_created": "2023-06-27 18:38:56.714489+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 8, "history": [], "name": "output-ds-2D_to_3D_workflow_5", "read_only": false, "project_id": 4, "resource_list": [{"dataset_id": 8, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 8}], "timestamp_created": "2023-06-27 18:38:56.714489+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T16:38:56.714489+00:00", "name": "proj-2D_to_3D_workflow_5", "id": 4} +2023-06-30 11:03:49.643708+02 2023-06-30 11:05:17.611838+02 \N 7 6 11 12 6 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-tiny-scmultiplex1", "project_id": 6, "id": 6, "task_list": [{"id": 31, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 6, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 32, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 6, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 33, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 6, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 34, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 6, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 35, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 6, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 36, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "input_channels": {"C01": {"wavelength_id": "A01_C01"}}, "label_image": "nuclei", "output_table_name": "nuclei"}, "task_id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 6, "order": 5, "task": {"source": "pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.0", "docs_link": null}}], "timestamp_created": "2023-06-30 11:03:49.643708+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 11, "history": [], "name": "input-ds-cardiac-tiny-scmultiplex1", "read_only": true, "project_id": 6, "resource_list": [{"dataset_id": 11, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 11}], "timestamp_created": "2023-06-30 11:03:49.643708+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 12, "history": [], "name": "output-ds-cardiac-tiny-scmultiplex1", "read_only": false, "project_id": 6, "resource_list": [{"dataset_id": 12, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 12}], "timestamp_created": "2023-06-30 11:03:49.643708+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-30T09:03:49.643708+00:00", "name": "proj-cardiac-tiny-scmultiplex1", "id": 6} +2023-06-28 11:50:38.044674+02 2023-06-28 11:51:20.267262+02 \N 6 1 1 2 1 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-4", "project_id": 1, "id": 1, "task_list": [{"id": 1, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 1, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 2, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 1, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 3, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 2, "mem": 2000}, "workflow_id": 1, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 4, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 1, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 5, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 1, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 6, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 1, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 443, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 2}, "task_id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 1, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 82, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}, {"id": 444, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.6, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"label": "DAPI"}}, "task_id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 1, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 468, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2}, "task_id": 94, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 1, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 94, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 1, "history": [], "name": "input-ds-cardiac-test-4", "read_only": true, "project_id": 1, "resource_list": [{"dataset_id": 1, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 1}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 2, "history": [], "name": "output-ds-cardiac-test-4", "read_only": false, "project_id": 1, "resource_list": [{"dataset_id": 2, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 2}], "timestamp_created": "2023-06-27 17:54:31.667519+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:54:31.667519+00:00", "name": "proj-cardiac-test-4", "id": 1} +2023-07-07 10:22:44.775703+02 2023-07-07 10:22:49.025706+02 \N 9 2 3 13 2 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-5", "id": 2, "project_id": 2, "task_list": [{"id": 7, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 2, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 8, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 9, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 2, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 10, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 11, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 12, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 2, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 38, "args": {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements"}, "task_id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 2, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.0", "docs_link": null}}, {"id": 71, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 2, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} __UNDEFINED__ {"id": 3, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 2, "history": [], "read_only": true, "name": "input-ds-cardiac-test-5", "resource_list": [{"dataset_id": 3, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 3}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} {"id": 13, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 2, "history": [], "read_only": false, "name": "Output-DS2", "resource_list": [{"dataset_id": 13, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 13}], "timestamp_created": "2023-06-27 17:55:23.122511+02:00"} \N {"read_only": false, "timestamp_created": "2023-06-27T15:55:23.122511+00:00", "name": "proj-cardiac-test-5", "id": 2} +2023-08-09 09:58:14.976868+02 2023-08-09 09:59:06.579232+02 \N 39 18 45 46 18 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow cardiac-test-partial-1", "project_id": 18, "id": 18, "task_list": [{"id": 95, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 18, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 1, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 96, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 18, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 97, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 18, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 98, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 18, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 99, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 18, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 100, "args": {}, "task_id": 7, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 18, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 7, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-08-09 09:58:14.976868+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 45, "history": [], "name": "input-ds-cardiac-test-partial-1", "read_only": true, "project_id": 18, "resource_list": [{"dataset_id": 45, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 45}], "timestamp_created": "2023-08-09 09:58:14.976868+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 46, "history": [], "name": "output-ds-cardiac-test-partial-1", "read_only": false, "project_id": 18, "resource_list": [{"dataset_id": 46, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 46}], "timestamp_created": "2023-08-09 09:58:14.976868+02:00"} \N {"read_only": false, "timestamp_created": "2023-08-09T07:58:14.976868+00:00", "name": "proj-cardiac-test-partial-1", "id": 18} +2023-08-07 18:12:46.178079+02 2023-08-07 18:13:15.125437+02 \N 37 16 40 41 16 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow multiplex-1", "project_id": 16, "id": 16, "task_list": [{"id": 84, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000}, "workflow_id": 16, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 85, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 16, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 86, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 16, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 87, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 16, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 88, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_ROI_table": "nuclei_ROI_table", "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 16, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 40, "history": [], "name": "input-ds-multiplex-1", "read_only": true, "project_id": 16, "resource_list": [{"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 38}, {"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 39}, {"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 40}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/2", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/2"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "png", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 41, "history": [], "name": "output-ds-multiplex-1", "read_only": false, "project_id": 16, "resource_list": [{"dataset_id": 41, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 41}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} \N {"read_only": false, "timestamp_created": "2023-08-07T16:12:46.178079+00:00", "name": "proj-multiplex-1", "id": 16} +2023-08-07 18:15:40.713314+02 2023-08-07 18:18:47.238421+02 \N 38 16 40 42 16 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Workflow multiplex-1", "id": 16, "project_id": 16, "task_list": [{"id": 84, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000}, "workflow_id": 16, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 85, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 16, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 86, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 16, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 87, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 16, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 88, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_ROI_table": "nuclei_ROI_table", "output_label_name": "nuclei"}, "task_id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 16, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 5, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} __UNDEFINED__ {"id": 40, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 16, "history": [], "read_only": true, "name": "input-ds-multiplex-1", "resource_list": [{"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 38}, {"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 39}, {"dataset_id": 40, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 40}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/2", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/2"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "png", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 42, "history": [], "name": "output_segmentation", "read_only": false, "project_id": 16, "resource_list": [{"dataset_id": 42, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 42}], "timestamp_created": "2023-08-07 18:12:46.178079+02:00"} \N {"read_only": false, "timestamp_created": "2023-08-07T16:12:46.178079+00:00", "name": "proj-multiplex-1", "id": 16} +2023-09-06 15:42:52.727684+02 2023-09-06 15:43:23.576461+02 \N 47 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "id": 23, "project_id": 20, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"id": 51, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 20, "history": [], "read_only": true, "name": "InputDs", "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"id": 52, "meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 20, "history": [], "read_only": false, "name": "OutputDs_1", "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-14 09:46:46.420447+02 2023-09-14 09:46:49.687697+02 \N 68 30 71 72 35 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 6 {"name": "Workflow reversed_1", "project_id": 30, "id": 35, "task_list": [{"id": 197, "args": {}, "task_id": 29, "meta": {"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000}, "workflow_id": 35, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 29, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 198, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 35, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 199, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 35, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 200, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 35, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 201, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"}, "task_id": 41, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "workflow_id": 35, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::calculate_registration_(image-based)", "name": "Calculate registration (image-based)", "args_schema": {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Calculate registration based on images\\n\\nThis task consists of 3 parts:\\n\\n1. Loading the images of a given ROI (=> loop over ROIs)\\n2. Calculating the transformation for that ROI\\n3. Storing the calculated transformation in the ROI table\\n\\nParallelization level: image", "id": 41, "meta": {"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based"}}, {"id": 202, "args": {"roi_table": "FOV_ROI_table", "reference_cycle": 0}, "task_id": 42, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "workflow_id": 35, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::apply_registration_to_roi_tables", "name": "Apply Registration to ROI Tables", "args_schema": {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task does not use the metadata."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Applies pre-calculated registration to ROI tables.\\n\\nApply pre-calculated registration such that resulting ROIs contain\\nthe consensus align region between all cycles.\\n\\nParallelization level: well", "id": 42, "meta": {"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables"}}, {"id": 203, "args": {"reference_cycle": "0", "overwrite_input": true, "registered_roi_table": "registered_FOV_ROI_table"}, "task_id": 43, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 35, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::apply_registration_to_image", "name": "Apply Registration to Image", "args_schema": {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server). `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Apply registration to images by using a registered ROI table\\n\\nThis task consists of 4 parts:\\n\\n1. Mask all regions in images that are not available in the\\nregistered ROI table and store each cycle aligned to the\\nreference_cycle (by looping over ROIs).\\n2. Do the same for all label images.\\n3. Copy all tables from the non-aligned image to the aligned image\\n(currently only works well if the only tables are well & FOV ROI tables\\n(registered and original). Not implemented for measurement tables and\\nother ROI tables).\\n4. Clean up: Delete the old, non-aligned image and rename the new,\\naligned image to take over its place.\\n\\nParallelization level: image", "id": 43, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image"}}], "timestamp_created": "2023-09-14 09:46:46.420447+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 71, "history": [], "name": "input-ds-reversed_1", "read_only": true, "project_id": 30, "resource_list": [{"dataset_id": 71, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 78}, {"dataset_id": 71, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 79}, {"dataset_id": 71, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 80}], "timestamp_created": "2023-09-14 09:46:46.420447+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 72, "history": [], "name": "output-ds-reversed_1", "read_only": false, "project_id": 30, "resource_list": [{"dataset_id": 72, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 81}], "timestamp_created": "2023-09-14 09:46:46.420447+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:46:46.420447+00:00", "name": "proj-reversed_1", "id": 30} +2023-09-06 16:28:12.340512+02 2023-09-06 16:31:54.380231+02 \N 49 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "project_id": 20, "id": 23, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 51, "history": [], "name": "InputDs", "read_only": true, "project_id": 20, "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 52, "history": [], "name": "OutputDs_1", "read_only": false, "project_id": 20, "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-14 09:32:17.883702+02 2023-09-14 09:32:42.482596+02 \N 63 25 62 62 30 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 2 5 {"name": "Workflow cardiac-test-partial-2", "id": 30, "project_id": 25, "task_list": [{"id": 154, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 30, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 155, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 30, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 156, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 30, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 157, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 30, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 158, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 30, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 159, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 30, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:30:47.026409+02:00"} __UNDEFINED__ {"id": 62, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 25, "history": [], "read_only": false, "name": "output-ds-cardiac-test-partial-2", "resource_list": [{"dataset_id": 62, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 67}], "timestamp_created": "2023-09-14 09:30:47.026409+02:00"} {"id": 62, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 25, "history": [], "read_only": false, "name": "output-ds-cardiac-test-partial-2", "resource_list": [{"dataset_id": 62, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 67}], "timestamp_created": "2023-09-14 09:30:47.026409+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:30:47.026409+00:00", "name": "proj-cardiac-test-partial-2", "id": 25} +2023-09-06 16:49:29.736668+02 2023-09-06 16:51:20.585457+02 \N 50 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "id": 23, "project_id": 20, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"id": 51, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 20, "history": [], "read_only": true, "name": "InputDs", "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"id": 52, "meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 20, "history": [], "read_only": false, "name": "OutputDs_1", "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-06 16:53:34.942509+02 2023-09-06 16:53:40.317324+02 \N 51 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "id": 23, "project_id": 20, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"id": 51, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 20, "history": [], "read_only": true, "name": "InputDs", "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"id": 52, "meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 20, "history": [], "read_only": false, "name": "OutputDs_1", "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-06 16:57:29.823164+02 2023-09-06 16:57:36.148075+02 \N 52 20 51 52 23 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 9999 9999 {"name": "Prepare_Zarrs", "project_id": 20, "id": 23, "task_list": [{"id": 117, "args": {}, "task_id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 23, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing)", "name": "Create OME-ZARR structure (multiplexing)", "args_schema": {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 8, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 118, "args": null, "task_id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 2, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 119, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]}, "task_id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 23, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 3, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}, {"id": 120, "args": null, "task_id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 23, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 4, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.10.0", "docs_link": null}}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 51, "history": [], "name": "InputDs", "read_only": true, "project_id": 20, "resource_list": [{"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 52}, {"dataset_id": 51, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 53}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} {"meta": {"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 52, "history": [], "name": "OutputDs_1", "read_only": false, "project_id": 20, "resource_list": [{"dataset_id": 52, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 57}], "timestamp_created": "2023-09-06 15:42:52.727684+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-06T13:42:52.727684+00:00", "name": "Max_3D_Registration", "id": 20} +2023-09-14 09:26:42.119903+02 2023-09-14 09:27:11.961479+02 \N 60 23 57 58 28 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny", "project_id": 23, "id": 28, "task_list": [{"id": 426, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 28, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 86, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 427, "args": {"overwrite": false}, "task_id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 28, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 87, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 144, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 28, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 145, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 28, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 146, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 28, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 147, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 28, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:26:42.119903+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 57, "history": [], "name": "input-ds-cardiac-tiny", "read_only": true, "project_id": 23, "resource_list": [{"dataset_id": 57, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 62}], "timestamp_created": "2023-09-14 09:26:42.119903+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 58, "history": [], "name": "output-ds-cardiac-tiny", "read_only": false, "project_id": 23, "resource_list": [{"dataset_id": 58, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 63}], "timestamp_created": "2023-09-14 09:26:42.119903+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:26:42.119903+00:00", "name": "proj-cardiac-tiny", "id": 23} +2023-09-14 09:28:20.232417+02 2023-09-14 09:29:31.192833+02 \N 61 24 59 60 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 59, "history": [], "name": "input-ds-cardiac-tiny-1", "read_only": true, "project_id": 24, "resource_list": [{"dataset_id": 59, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 64}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 60, "history": [], "name": "output-ds-cardiac-tiny-1", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 60, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 65}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-09-14 09:47:28.329188+02 2023-09-14 09:49:54.255614+02 \N 69 31 73 74 36 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 7 {"name": "Workflow no_illum_corr-2", "project_id": 31, "id": 36, "task_list": [{"id": 204, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 36, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 205, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 36, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 206, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 36, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 207, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 36, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 208, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 36, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 209, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 36, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 210, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 36, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 211, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 36, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:47:28.329188+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 73, "history": [], "name": "input-ds-no_illum_corr-2", "read_only": true, "project_id": 31, "resource_list": [{"dataset_id": 73, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 82}], "timestamp_created": "2023-09-14 09:47:28.329188+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 74, "history": [], "name": "output-ds-no_illum_corr-2", "read_only": false, "project_id": 31, "resource_list": [{"dataset_id": 74, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 83}], "timestamp_created": "2023-09-14 09:47:28.329188+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:47:28.329188+00:00", "name": "proj-no_illum_corr-2", "id": 31} +2023-09-14 09:48:03.156404+02 2023-09-14 09:51:10.087625+02 \N 70 32 75 76 37 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 8 {"name": "Workflow with_illum_corr_2", "project_id": 32, "id": 37, "task_list": [{"id": 212, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 0, "end": 690}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 0, "end": 180}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 0, "end": 1490}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 37, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 213, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 37, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 214, "args": {}, "task_id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 37, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:illumination_correction", "name": "Illumination correction", "args_schema": {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 215, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 37, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 216, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 37, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 217, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 37, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 218, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 37, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 219, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 37, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 220, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 37, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:48:03.156404+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 75, "history": [], "name": "input-ds-with_illum_corr_2", "read_only": true, "project_id": 32, "resource_list": [{"dataset_id": 75, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 84}], "timestamp_created": "2023-09-14 09:48:03.156404+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 76, "history": [], "name": "output-ds-with_illum_corr_2", "read_only": false, "project_id": 32, "resource_list": [{"dataset_id": 76, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 85}], "timestamp_created": "2023-09-14 09:48:03.156404+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:48:03.156404+00:00", "name": "proj-with_illum_corr_2", "id": 32} +2023-09-14 09:48:21.646482+02 2023-09-14 11:01:00.116272+02 \N 71 33 77 78 38 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 7 {"name": "Workflow no_illum_corr_fullWell-1", "project_id": 33, "id": 38, "task_list": [{"id": 221, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 38, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 222, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 38, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 223, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 38, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 224, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 38, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 225, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 38, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 226, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 38, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 227, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 38, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 228, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 38, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:48:21.646482+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 77, "history": [], "name": "input-ds-no_illum_corr_fullWell-1", "read_only": true, "project_id": 33, "resource_list": [{"dataset_id": 77, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 86}], "timestamp_created": "2023-09-14 09:48:21.646482+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 78, "history": [], "name": "output-ds-no_illum_corr_fullWell-1", "read_only": false, "project_id": 33, "resource_list": [{"dataset_id": 78, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 87}], "timestamp_created": "2023-09-14 09:48:21.646482+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:48:21.646482+00:00", "name": "proj-no_illum_corr_fullWell-1", "id": 33} +2023-09-14 09:48:38.746527+02 2023-09-14 11:29:12.957528+02 \N 72 34 79 80 39 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 8 {"name": "Workflow with_illum_corr_fullWell-1", "project_id": 34, "id": 39, "task_list": [{"id": 229, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 0, "end": 690}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 0, "end": 180}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 0, "end": 1490}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 39, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 230, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 39, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 231, "args": {}, "task_id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 39, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:illumination_correction", "name": "Illumination correction", "args_schema": {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 27, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 232, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 39, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 233, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 39, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 234, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 39, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 235, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 39, "order": 6, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 236, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 39, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 237, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "workflow_id": 39, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:48:38.746527+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 79, "history": [], "name": "input-ds-with_illum_corr_fullWell-1", "read_only": true, "project_id": 34, "resource_list": [{"dataset_id": 79, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 88}], "timestamp_created": "2023-09-14 09:48:38.746527+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 80, "history": [], "name": "output-ds-with_illum_corr_fullWell-1", "read_only": false, "project_id": 34, "resource_list": [{"dataset_id": 80, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 89}], "timestamp_created": "2023-09-14 09:48:38.746527+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:48:38.746527+00:00", "name": "proj-with_illum_corr_fullWell-1", "id": 34} +2023-09-14 09:49:15.33797+02 2023-09-14 09:52:39.652269+02 \N 73 35 81 82 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 8 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 81, "history": [], "name": "input-ds-2D_to_3D_workflow_1", "read_only": true, "project_id": 35, "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 82, "history": [], "name": "output-ds-2D_to_3D_workflow_1", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 82, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 92}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 10:50:01.251872+02 2023-09-14 10:50:01.372644+02 \N 74 35 82 82 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 8 8 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 82, "history": [], "name": "output-ds-2D_to_3D_workflow_1", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 82, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 92}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 82, "history": [], "name": "output-ds-2D_to_3D_workflow_1", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 82, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 92}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 10:53:11.267726+02 2023-09-14 10:53:22.688036+02 \N 76 26 64 64 31 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 4 5 {"name": "Workflow cardiac-tiny-2", "project_id": 26, "id": 31, "task_list": [{"id": 160, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 31, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 161, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 162, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 31, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 163, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 164, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 31, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 165, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 64, "history": [], "name": "output-ds-cardiac-tiny-2", "read_only": false, "project_id": 26, "resource_list": [{"dataset_id": 64, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 69}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 64, "history": [], "name": "output-ds-cardiac-tiny-2", "read_only": false, "project_id": 26, "resource_list": [{"dataset_id": 64, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 69}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:39:41.581472+00:00", "name": "proj-cardiac-tiny-2", "id": 26} +2023-09-14 10:56:33.45552+02 2023-09-14 11:01:50.997701+02 \N 78 35 81 82 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 0 8 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 35, "id": 40, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 81, "history": [], "name": "input-ds-2D_to_3D_workflow_1", "read_only": true, "project_id": 35, "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 82, "history": [], "name": "output-ds-2D_to_3D_workflow_1", "read_only": false, "project_id": 35, "resource_list": [{"dataset_id": 82, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 92}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 11:12:00.031047+02 2023-09-14 11:13:50.616357+02 \N 83 35 81 84 40 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 1 {"name": "Workflow 2D_to_3D_workflow_1", "id": 40, "project_id": 35, "task_list": [{"id": 238, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 40, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 239, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 240, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 241, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 242, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 243, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 40, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 244, "args": {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 40, "order": 6, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 245, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 40, "order": 7, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 246, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 40, "order": 8, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} __UNDEFINED__ {"id": 81, "meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "project_id": 35, "history": [], "read_only": true, "name": "input-ds-2D_to_3D_workflow_1", "resource_list": [{"dataset_id": 81, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 90}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} {"id": 84, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 35, "history": [], "read_only": false, "name": "test_output_2", "resource_list": [{"dataset_id": 84, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 94}], "timestamp_created": "2023-09-14 09:49:15.337970+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:49:15.337970+00:00", "name": "proj-2D_to_3D_workflow_1", "id": 35} +2023-09-14 11:31:30.719236+02 2023-09-14 11:31:30.824044+02 \N 88 26 86 86 31 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 4 5 {"name": "Workflow cardiac-tiny-2", "project_id": 26, "id": 31, "task_list": [{"id": 160, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 31, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 161, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 162, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 31, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 163, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 164, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 31, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 165, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 31, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 86, "history": [], "name": "output_test1", "read_only": false, "project_id": 26, "resource_list": [{"dataset_id": 86, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 96}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 86, "history": [], "name": "output_test1", "read_only": false, "project_id": 26, "resource_list": [{"dataset_id": 86, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 96}], "timestamp_created": "2023-09-14 09:39:41.581472+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:39:41.581472+00:00", "name": "proj-cardiac-tiny-2", "id": 26} +2023-09-15 18:56:51.872477+02 2023-09-15 18:57:11.921323+02 \N 91 24 87 87 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 4 5 {"name": "Workflow cardiac-tiny-1", "id": 29, "project_id": 24, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"id": 87, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 24, "history": [], "read_only": false, "name": "Output1", "resource_list": [{"dataset_id": 87, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 97}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"id": 87, "meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "project_id": 24, "history": [], "read_only": false, "name": "Output1", "resource_list": [{"dataset_id": 87, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 97}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-09-15 19:03:11.082945+02 2023-09-15 19:03:19.486788+02 \N 93 24 88 88 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 4 5 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 88, "history": [], "name": "Output2", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 88, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 98}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 88, "history": [], "name": "Output2", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 88, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 98}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-09-15 19:11:39.685535+02 2023-09-15 19:13:33.078517+02 \N 95 24 59 89 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 5 {"name": "Workflow cardiac-tiny-1", "id": 29, "project_id": 24, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 59, "history": [], "name": "input-ds-cardiac-tiny-1", "read_only": true, "project_id": 24, "resource_list": [{"dataset_id": 59, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 64}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 89, "history": [], "name": "Output3", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 89, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 99}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-09-15 19:14:40.244342+02 2023-09-15 19:15:14.352917+02 \N 96 24 89 89 29 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ done __REDACTED LOGS__ 1 5 {"name": "Workflow cardiac-tiny-1", "project_id": 24, "id": 29, "task_list": [{"id": 148, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 29, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 22, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 149, "args": {"overwrite": false}, "task_id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 23, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 150, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 29, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 24, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 151, "args": {"overwrite": false}, "task_id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 25, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 152, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 29, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 26, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}, {"id": 153, "args": {}, "task_id": 28, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 29, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 28, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0a2", "docs_link": null}}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} __UNDEFINED__ {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 89, "history": [], "name": "Output3", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 89, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 99}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 89, "history": [], "name": "Output3", "read_only": false, "project_id": 24, "resource_list": [{"dataset_id": 89, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 99}], "timestamp_created": "2023-09-14 09:28:20.232417+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-14T07:28:20.232417+00:00", "name": "proj-cardiac-tiny-1", "id": 24} +2023-09-20 14:58:04.665133+02 2023-09-20 14:58:54.712284+02 \N 99 41 96 102 46 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 6 {"name": "Workflow demo", "project_id": 41, "id": 46, "task_list": [{"id": 273, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]}, "task_id": 33, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 46, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 33, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 274, "args": {"overwrite": false}, "task_id": 34, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 46, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 34, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 275, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 35, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 46, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 35, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 276, "args": {"overwrite": false}, "task_id": 36, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 46, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 36, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 277, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 37, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 46, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 37, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 278, "args": {}, "task_id": 39, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 46, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 39, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 312, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements_scmultiplex", "input_channels": {"C01": {"label": "DAPI"}}}, "task_id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 46, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": null, "id": 13, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.0", "docs_link": null}}, {"id": 389, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true}, "task_id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 46, "order": 7, "task": {"source": "pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 64, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.2", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}], "timestamp_created": "2023-09-20 14:58:04.665133+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 96, "history": [], "name": "20230905_Condition17_input", "read_only": true, "project_id": 41, "resource_list": [{"dataset_id": 96, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 106}], "timestamp_created": "2023-09-20 14:58:04.665133+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 102, "history": [], "name": "OutputputDs", "read_only": false, "project_id": 41, "resource_list": [{"dataset_id": 102, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 113}], "timestamp_created": "2023-09-20 14:58:04.665133+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-20T12:58:04.665133+00:00", "name": "20230920_Demo", "id": 41} +2023-09-29 17:29:54.377672+02 2023-09-29 17:31:05.776631+02 \N 122 49 119 120 55 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 6 {"name": "Workflow cardiac-tiny-2", "project_id": 49, "id": 55, "task_list": [{"id": 336, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]}, "task_id": 33, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 55, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 33, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 337, "args": {"overwrite": false}, "task_id": 34, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 55, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 34, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 338, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 35, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 55, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 35, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 339, "args": {"overwrite": false}, "task_id": 36, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 55, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 36, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 340, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"}, "task_id": 37, "meta": {"cpus_per_task": 4, "mem": 32000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 55, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 37, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 341, "args": {}, "task_id": 39, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 55, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 39, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.11.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 342, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "nuclei_scmultiplex_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}}, "task_id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 55, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Measurements of intensities and morphologies\\n\\nWrapper task for scmultiplex measurements for Fractal to generate\\nmeasurements of intensities and morphologies", "id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.1", "docs_link": "https://github.com/fmi-basel/gliberal-scMultipleX"}}], "timestamp_created": "2023-09-29 17:29:54.377672+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 119, "history": [], "name": "InputDs", "read_only": false, "project_id": 49, "resource_list": [{"dataset_id": 119, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 133}], "timestamp_created": "2023-09-29 17:29:54.377672+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "scMultipleX Measurements: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 120, "history": [], "name": "OutputDs", "read_only": false, "project_id": 49, "resource_list": [{"dataset_id": 120, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 134}], "timestamp_created": "2023-09-29 17:29:54.377672+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-29T15:29:54.377672+00:00", "name": "TestScmultiplex", "id": 49} +2023-09-29 18:52:57.24979+02 2023-09-29 18:55:29.384356+02 \N 124 50 121 122 56 /tmp/__REDACTED_WORKING_DIR__ /tmp/__REDACTED_WORKING_DIR_USER__ failed __REDACTED LOGS__ 0 10 {"name": "Workflow 2D_to_3D_workflow_1", "project_id": 50, "id": 56, "task_list": [{"id": 343, "args": {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]}, "task_id": 46, "meta": {"cpus_per_task": 1, "mem": 4000}, "workflow_id": 56, "order": 0, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::create_ome-zarr_structure", "name": "Create OME-Zarr structure", "args_schema": {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}}, "input_type": "image", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Create a OME-NGFF zarr folder, without reading/writing image data.\\n\\nFind plates (for each folder in input_paths):\\n\\n- glob image files,\\n- parse metadata from image filename to identify plates,\\n- identify populated channels.\\n\\nCreate a zarr folder (for each plate):\\n\\n- parse mlf metadata,\\n- identify wells and field of view (FOV),\\n- create FOV ZARR,\\n- verify that channels are uniform (i.e., same channels).", "id": 46, "meta": {"cpus_per_task": 1, "mem": 4000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr"}}, {"id": 344, "args": {"overwrite": false}, "task_id": 47, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 56, "order": 1, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::convert_yokogawa_to_ome-zarr", "name": "Convert Yokogawa to OME-Zarr", "args_schema": {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Convert Yokogawa output (png, tif) to zarr file.\\n\\nThis task is typically run after Create OME-Zarr or\\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\\nwere prepared.", "id": 47, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr"}}, {"id": 345, "args": {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true}, "task_id": 48, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 56, "order": 2, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::copy_ome-zarr_structure", "name": "Copy OME-Zarr structure", "args_schema": {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Duplicate an input zarr structure to a new path.\\n\\nThis task copies all the structure, but none of the image data:\\n\\n- For each plate, create a new zarr group with the same attributes as\\n the original one.\\n- For each well (in each plate), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), create a new zarr subgroup with the\\n same attributes as the original one.\\n- For each image (in each well), copy the relevant AnnData tables from\\n the original source.\\n\\nNote: this task makes use of methods from the `Attributes` class, see\\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html.", "id": 48, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr"}}, {"id": 346, "args": {"overwrite": false}, "task_id": 49, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 56, "order": 3, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::maximum_intensity_projection", "name": "Maximum Intensity Projection", "args_schema": {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Perform maximum-intensity projection along Z axis.\\n\\nNote: this task stores the output in a new zarr file.", "id": 49, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection"}}, {"id": 347, "args": {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "organoids", "output_ROI_table": "organoid_ROI_table"}, "task_id": 50, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 56, "order": 4, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 50, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 348, "args": {}, "task_id": 52, "meta": {"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"}, "workflow_id": 56, "order": 5, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::napari_workflows_wrapper", "name": "Napari workflows wrapper", "args_schema": {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run a napari-workflow on the ROIs of a single OME-NGFF image.\\n\\nThis task takes images and labels and runs a napari-workflow on them that\\ncan produce a label and tables as output.\\n\\nExamples of allowed entries for `input_specs` and `output_specs`:\\n\\n```\\ninput_specs = {\\n \\"in_1\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"wavelength_id\\": \\"A01_C02\\"}},\\n \\"in_2\\": {\\"type\\": \\"image\\", \\"channel\\": {\\"label\\": \\"DAPI\\"}},\\n \\"in_3\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI\\"},\\n}\\n\\noutput_specs = {\\n \\"out_1\\": {\\"type\\": \\"label\\", \\"label_name\\": \\"label_DAPI_new\\"},\\n \\"out_2\\": {\\"type\\": \\"dataframe\\", \\"table_name\\": \\"measurements\\"},\\n}\\n```", "id": 52, "meta": {"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper"}}, {"id": 352, "args": {"input_ROI_table": "organoid_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "organoids", "output_table_name": "scmultiplex_2d_nuclei_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}}, "task_id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 56, "order": 6, "task": {"source": "pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Measurements of intensities and morphologies\\n\\nWrapper task for scmultiplex measurements for Fractal to generate\\nmeasurements of intensities and morphologies", "id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.1", "docs_link": "https://github.com/fmi-basel/gliberal-scMultipleX"}}, {"id": 349, "args": {"level": 0, "suffix": "mip", "label_name": "organoids", "ROI_tables_to_copy": ["organoid_ROI_table"], "new_label_name": "organoids_2D", "new_table_names": ["nuclei_2D_ROI_table"]}, "task_id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "workflow_id": 56, "order": 7, "task": {"source": "__REDACTED_SOURCE_11__", "name": "Convert 2D Segmentation to 3D", "args_schema": {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 11, "meta": {"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 350, "args": {"from_2d_to_3d": true, "suffix": "mip"}, "task_id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "workflow_id": 56, "order": 8, "task": {"source": "__REDACTED_SOURCE_12__", "name": "Convert Metadata Components from 2D to 3D", "args_schema": {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false}, "input_type": "image", "owner": "__REDACTED_OWNER__", "args_schema_version": "pydantic_v1", "docs_info": null, "id": 12, "meta": {"cpus_per_task": 1, "mem": 1000}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.0.1", "docs_link": null}}, {"id": 351, "args": {"input_ROI_table": "organoid_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"}, "task_id": 50, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 56, "order": 9, "task": {"source": "pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 50, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.12.0", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}, {"id": 353, "args": {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "scmultiplex_3d_nuclei_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}}, "task_id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "workflow_id": 56, "order": 10, "task": {"source": "pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements", "name": "scMultipleX Measurements", "args_schema": {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Measurements of intensities and morphologies\\n\\nWrapper task for scmultiplex measurements for Fractal to generate\\nmeasurements of intensities and morphologies", "id": 59, "meta": {"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.4.1", "docs_link": "https://github.com/fmi-basel/gliberal-scMultipleX"}}, {"id": 442, "args": {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true}, "task_id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "workflow_id": 56, "order": 11, "task": {"source": "pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation", "name": "Cellpose Segmentation", "args_schema": {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}}, "input_type": "zarr", "owner": null, "args_schema_version": "pydantic_v1", "docs_info": "Run cellpose segmentation on the ROIs of a single OME-Zarr image.", "id": 90, "meta": {"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"}, "command": "/tmp/__REDACTED_COMMAND__", "output_type": "zarr", "version": "0.13.1", "docs_link": "https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation"}}], "timestamp_created": "2023-09-29 18:52:57.249790+02:00"} __UNDEFINED__ {"meta": {"history": [], "original_paths": [], "copy_ome_zarr": {}}, "type": "image", "id": 121, "history": [], "name": "InputDs", "read_only": false, "project_id": 50, "resource_list": [{"dataset_id": 121, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 135}], "timestamp_created": "2023-09-29 18:52:57.249790+02:00"} {"meta": {"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}}, "type": "zarr", "id": 122, "history": [], "name": "OutputDs", "read_only": false, "project_id": 50, "resource_list": [{"dataset_id": 122, "path": "/tmp/__REDACTED_RESOURCE_PATH__", "id": 136}], "timestamp_created": "2023-09-29 18:52:57.249790+02:00"} \N {"read_only": false, "timestamp_created": "2023-09-29T16:52:57.249790+00:00", "name": "2D_to_3D_test", "id": 50} +\. + + +-- +-- Data for Name: collectionstatev2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.collectionstatev2 (id, data, "timestamp") FROM stdin; +\. + + +-- +-- Data for Name: dataset; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.dataset (meta, name, type, read_only, id, project_id, history, timestamp_created) FROM stdin; +{"history": [], "original_paths": [], "copy_ome_zarr": {}} default \N f 14 7 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} default \N f 15 8 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} InputDs image t 19 10 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} OutputDs zarr f 20 10 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-test-partial image t 43 17 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-cardiac-test-partial zarr f 44 17 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-test-4 image t 1 1 [] 2023-06-27 17:54:31.667519+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-test-5 image t 3 2 [] 2023-06-27 17:55:23.122511+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-20230627_MD_Parsing_2D_Test6 image t 5 3 [] 2023-06-27 18:38:30.361417+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-20230627_MD_Parsing_2D_Test6 zarr f 6 3 [] 2023-06-27 18:38:30.361417+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-2D_to_3D_workflow_5 image t 7 4 [] 2023-06-27 18:38:56.714489+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-2D_to_3D_workflow_5 zarr f 8 4 [] 2023-06-27 18:38:56.714489+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-20230627_MD_Parsing_2D_Test1 image t 9 5 [] 2023-06-27 18:47:03.587612+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-tiny-scmultiplex1 image t 11 6 [] 2023-06-30 11:03:49.643708+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-tiny-scmultiplex1 zarr f 12 6 [] 2023-06-30 11:03:49.643708+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}} Output-DS2 zarr f 13 2 [] 2023-06-27 17:55:23.122511+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-multiplex-1 image t 40 16 [] 2023-08-07 18:12:46.178079+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/2", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/2"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "png", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}} output_segmentation zarr f 42 16 [] 2023-08-07 18:12:46.178079+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-test-partial-1 image t 45 18 [] 2023-08-09 09:58:14.976868+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} Output1 zarr f 87 24 [] 2023-09-14 09:28:20.232417+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} Output2 zarr f 88 24 [] 2023-09-14 09:28:20.232417+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} 20230905_Condition17_input image t 96 41 [] 2023-09-20 14:58:04.665133+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} OutputDs zarr f 122 50 [] 2023-09-29 18:52:57.24979+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} default \N f 90 36 [] 2000-01-01 01:00:00+01 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-multiplex-3 image t 38 15 [] 2023-08-07 18:08:41.098333+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/2", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/2"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "png", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}} output_test2 zarr f 47 16 [] 2023-08-07 18:12:46.178079+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} InputDs image t 51 20 [] 2023-09-06 15:42:52.727684+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-tiny image t 57 23 [] 2023-09-14 09:26:42.119903+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-cardiac-tiny zarr f 58 23 [] 2023-09-14 09:26:42.119903+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-tiny-1 image t 59 24 [] 2023-09-14 09:28:20.232417+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-test-partial-2 image t 61 25 [] 2023-09-14 09:30:47.026409+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-tiny-2 image t 63 26 [] 2023-09-14 09:39:41.581472+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardio-2x2-1 image t 65 27 [] 2023-09-14 09:44:13.313113+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardio-2x2-zenodo-subset-1 image t 67 28 [] 2023-09-14 09:44:44.589979+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert 2D Segmentation to 3D: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Convert Metadata Components from 2D to 3D", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-2D_to_3D_workflow_1 zarr f 82 35 [] 2023-09-14 09:49:15.33797+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} test_output zarr f 83 35 [] 2023-09-14 09:49:15.33797+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} test_output_3 zarr f 85 35 [] 2023-09-14 09:49:15.33797+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output_test1 zarr f 86 26 [] 2023-09-14 09:39:41.581472+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} Output3 zarr f 89 24 [] 2023-09-14 09:28:20.232417+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} InputDs image f 119 49 [] 2023-09-29 17:29:54.377672+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} InputDs image f 121 50 [] 2023-09-29 18:52:57.24979+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-cardiac-tiny-1312 image t 126 53 [] 2023-10-20 12:00:30.51846+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-tiny-1 zarr f 60 24 [] 2023-09-14 09:28:20.232417+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-tiny-2 zarr f 64 26 [] 2023-09-14 09:39:41.581472+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-multiplex-2 image t 69 29 [] 2023-09-14 09:46:24.672629+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-multiplex-2 zarr f 70 29 [] 2023-09-14 09:46:24.672629+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-reversed_1 image t 71 30 [] 2023-09-14 09:46:46.420447+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-reversed_1 zarr f 72 30 [] 2023-09-14 09:46:46.420447+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-no_illum_corr-2 image t 73 31 [] 2023-09-14 09:47:28.329188+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-with_illum_corr_2 image t 75 32 [] 2023-09-14 09:48:03.156404+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-no_illum_corr_fullWell-1 image t 77 33 [] 2023-09-14 09:48:21.646482+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-with_illum_corr_fullWell-1 image t 79 34 [] 2023-09-14 09:48:38.746527+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} input-ds-2D_to_3D_workflow_1 image t 81 35 [] 2023-09-14 09:49:15.33797+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "scMultipleX Measurements: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} OutputDs zarr f 120 49 [] 2023-09-29 17:29:54.377672+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "copy_ome_zarr": {}, "history": []} output-ds-cardiac-tiny-1312 zarr f 127 53 [] 2023-10-20 12:00:30.51846+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} InputDs image t 130 56 [] 2023-10-25 14:45:26.35285+02 +{"plate": ["AssayPlate_Greiner_#655090.zarr"], "well": ["AssayPlate_Greiner_#655090.zarr/C/02"], "image": ["AssayPlate_Greiner_#655090.zarr/C/02/0", "AssayPlate_Greiner_#655090.zarr/C/02/1", "AssayPlate_Greiner_#655090.zarr/C/02/2", "AssayPlate_Greiner_#655090.zarr/C/02/3", "AssayPlate_Greiner_#655090.zarr/C/02/4", "AssayPlate_Greiner_#655090.zarr/C/02/5"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": ["*_C02_*", "*F001*"], "history": [], "copy_ome_zarr": {}} OutputDs zarr f 131 56 [] 2023-10-25 14:45:26.35285+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-test-4 zarr f 2 1 [] 2023-06-27 17:54:31.667519+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-test-5 zarr f 4 2 [] 2023-06-27 17:55:23.122511+02 +{"plate": ["Plate.zarr"], "well": ["Plate.zarr/C/3/", "Plate.zarr/F/3/"], "image": ["Plate.zarr/C/3/0/", "Plate.zarr/F/3/0/"], "num_levels": 5, "coarsening_xy": 2, "channels": ["w1", "w2"], "mode": "top-level", "original_paths": [], "history": [], "copy_ome_zarr": {}} output-ds-20230627_MD_Parsing_2D_Test1 zarr f 10 5 [] 2023-06-27 18:47:03.587612+02 +{"history": [], "original_paths": [], "copy_ome_zarr": {}} output-ds-multiplex-3 zarr f 39 15 [] 2023-08-07 18:08:41.098333+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-with_illum_corr_2 zarr f 76 32 [] 2023-09-14 09:48:03.156404+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-no_illum_corr_fullWell-1 zarr f 78 33 [] 2023-09-14 09:48:21.646482+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-with_illum_corr_fullWell-1 zarr f 80 34 [] 2023-09-14 09:48:38.746527+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} test_output_2 zarr f 84 35 [] 2023-09-14 09:49:15.33797+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} OutputputDs zarr f 102 41 [] 2023-09-20 14:58:04.665133+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/0", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/1", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/2", "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/05/2"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "png", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}} output-ds-multiplex-1 zarr f 41 16 [] 2023-08-07 18:12:46.178079+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-test-partial-1 zarr f 46 18 [] 2023-08-09 09:58:14.976868+02 +{"plate": ["AssayPlate_Greiner_#655090"], "well": ["AssayPlate_Greiner_#655090_mip.zarr/B/02", "AssayPlate_Greiner_#655090_mip.zarr/E/04", "AssayPlate_Greiner_#655090_mip.zarr/F/02", "AssayPlate_Greiner_#655090_mip.zarr/G/03"], "image": ["AssayPlate_Greiner_#655090_mip.zarr/B/02/0", "AssayPlate_Greiner_#655090_mip.zarr/E/04/0", "AssayPlate_Greiner_#655090_mip.zarr/F/02/0", "AssayPlate_Greiner_#655090_mip.zarr/G/03/0", "AssayPlate_Greiner_#655090_mip.zarr/B/02/1", "AssayPlate_Greiner_#655090_mip.zarr/E/04/1", "AssayPlate_Greiner_#655090_mip.zarr/F/02/1", "AssayPlate_Greiner_#655090_mip.zarr/G/03/1"], "num_levels": 5, "coarsening_xy": 2, "original_paths": [], "image_extension": "tif", "image_glob_patterns": null, "history": [], "copy_ome_zarr": {}} OutputDs_1 zarr f 52 20 [] 2023-09-06 15:42:52.727684+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-cardiac-test-partial-2 zarr f 62 25 [] 2023-09-14 09:30:47.026409+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-cardio-2x2-1 zarr f 66 27 [] 2023-09-14 09:44:13.313113+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": ["*F001*Z0[4,5]*"], "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Illumination correction: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-cardio-2x2-zenodo-subset-1 zarr f 68 28 [] 2023-09-14 09:44:44.589979+02 +{"plate": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr"], "well": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/"], "image": ["20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/"], "num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "image_glob_patterns": null, "original_paths": [], "HISTORY_LEGACY": ["Create OME-Zarr structure", "Convert Yokogawa to OME-Zarr: ['20200812-CardiomyocyteDifferentiation14-Cycle1.zarr/B/03/0/']", "Copy OME-Zarr structure", "Maximum Intensity Projection: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Cellpose Segmentation: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']", "Napari workflows wrapper: ['20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr/B/03/0/']"], "history": [], "copy_ome_zarr": {}} output-ds-no_illum_corr-2 zarr f 74 31 [] 2023-09-14 09:47:28.329188+02 +\. + + +-- +-- Data for Name: datasetv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.datasetv2 (id, name, project_id, history, timestamp_created, zarr_dir, images, filters) FROM stdin; +1 MyDataset 1 [{"workflowtask": {"id": 1, "workflow_id": 1, "order": 0, "is_legacy_task": false, "input_filters": {"attributes": {}, "types": {}}, "task_id": 1, "task": {"id": 1, "name": "Echo Task", "type": "compound", "command_non_parallel": "echo", "command_parallel": "echo", "source": "admin:echo-task", "owner": "admin", "version": null, "input_types": {}, "output_types": {}}, "task_legacy_id": null, "task_legacy": null}, "status": "done", "parallelization": {}}] 2024-04-24 12:54:44.017086+02 /invalid/zarr [{"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000000", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000000", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000001", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000001", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000002", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000002", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000003", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000003", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000004", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000004", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000005", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000005", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000006", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000006", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000007", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000007", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000008", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000008", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}, {"zarr_url": "/invalid/zarr/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/000009", "origin": "/invalid/zarr/very/very/very/long/path/to/mimic/real/path/to/the/zarr/dir/origin-000009", "attributes": {"plate": "my-beautiful-plate.zarr", "well": "A99"}, "types": {"is_3D": true}}] {"attributes": {}, "types": {}} +\. + + +-- +-- Data for Name: jobv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.jobv2 (id, project_id, workflow_id, dataset_id, user_email, slurm_account, dataset_dump, workflow_dump, project_dump, worker_init, working_dir, working_dir_user, first_task_index, last_task_index, start_timestamp, end_timestamp, status, log) FROM stdin; +1 1 1 1 vanilla@example.org \N {"name": "MyDataset", "project_id": 1, "id": 1, "zarr_dir": "/invalid/zarr", "filters": {"attributes": {}, "types": {}}, "timestamp_created": "2024-04-24T10:54:44.017086+00:00"} {"project_id": 1, "name": "MyWorkflow", "id": 1, "timestamp_created": "2024-04-24T10:54:44.034782+00:00"} {"name": "MyProject_uv", "id": 1, "timestamp_created": "2024-04-24T10:54:43.995984+00:00"} \N /private/tmp/proj_0000001_wf_0000001_job_0000001_20240424_105444 /private/tmp/proj_0000001_wf_0000001_job_0000001_20240424_105444 0 0 2024-04-24 12:54:44.103821+02 2024-04-24 12:54:44.176501+02 done 2024-04-24 12:54:44,151 - WF1_job1 - INFO - Start execution of workflow "MyWorkflow"; more logs at /private/tmp/proj_0000001_wf_0000001_job_0000001_20240424_105444/workflow.log\n2024-04-24 12:54:44,151 - WF1_job1 - DEBUG - fractal_server.__VERSION__: 2.0.0a11\n2024-04-24 12:54:44,151 - WF1_job1 - DEBUG - FRACTAL_RUNNER_BACKEND: local\n2024-04-24 12:54:44,151 - WF1_job1 - DEBUG - slurm_user: vanilla-slurm\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - slurm_account: None\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - worker_init: None\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - job.id: 1\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - job.working_dir: /private/tmp/proj_0000001_wf_0000001_job_0000001_20240424_105444\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - job.working_dir_user: /private/tmp/proj_0000001_wf_0000001_job_0000001_20240424_105444\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - job.first_task_index: 0\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - job.last_task_index: 0\n2024-04-24 12:54:44,153 - WF1_job1 - DEBUG - START workflow "MyWorkflow"\n2024-04-24 12:54:44,154 - WF1_job1 - DEBUG - SUBMIT 0-th task (name="Echo Task")\n2024-04-24 12:54:44,168 - WF1_job1 - DEBUG - END 0-th task (name="Echo Task")\n2024-04-24 12:54:44,169 - WF1_job1 - INFO - End execution of workflow "MyWorkflow"; more logs at /private/tmp/proj_0000001_wf_0000001_job_0000001_20240424_105444/workflow.log\n2024-04-24 12:54:44,169 - WF1_job1 - DEBUG - END workflow "MyWorkflow"\n +\. + + +-- +-- Data for Name: linkuserproject; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.linkuserproject (project_id, user_id) FROM stdin; +1 6 +2 6 +3 6 +4 6 +5 6 +6 6 +7 6 +8 6 +10 6 +15 6 +16 6 +17 6 +18 6 +20 6 +23 6 +24 6 +25 6 +26 6 +27 6 +28 6 +29 6 +30 6 +31 6 +32 6 +33 6 +34 6 +35 6 +36 1 +41 6 +49 6 +50 6 +53 6 +56 6 +\. + + +-- +-- Data for Name: linkuserprojectv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.linkuserprojectv2 (project_id, user_id) FROM stdin; +1 28 +\. + + +-- +-- Data for Name: oauthaccount; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.oauthaccount (id, user_id, oauth_name, access_token, expires_at, refresh_token, account_id, account_email) FROM stdin; +\. + + +-- +-- Data for Name: project; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.project (name, read_only, id, timestamp_created) FROM stdin; +test f 7 2000-01-01 01:00:00+01 +Fractal Project f 8 2000-01-01 01:00:00+01 +Demo f 10 2000-01-01 01:00:00+01 +proj-cardiac-test-partial f 17 2000-01-01 01:00:00+01 +Test f 36 2000-01-01 01:00:00+01 +proj-cardiac-test-4 f 1 2023-06-27 17:54:31.667519+02 +proj-cardiac-test-5 f 2 2023-06-27 17:55:23.122511+02 +proj-20230627_MD_Parsing_2D_Test6 f 3 2023-06-27 18:38:30.361417+02 +proj-2D_to_3D_workflow_5 f 4 2023-06-27 18:38:56.714489+02 +proj-20230627_MD_Parsing_2D_Test1 f 5 2023-06-27 18:47:03.587612+02 +proj-cardiac-tiny-scmultiplex1 f 6 2023-06-30 11:03:49.643708+02 +proj-multiplex-3 f 15 2023-08-07 18:08:41.098333+02 +proj-multiplex-1 f 16 2023-08-07 18:12:46.178079+02 +proj-cardiac-test-partial-1 f 18 2023-08-09 09:58:14.976868+02 +Max_3D_Registration f 20 2023-09-06 15:42:52.727684+02 +proj-cardiac-tiny f 23 2023-09-14 09:26:42.119903+02 +proj-cardiac-tiny-1 f 24 2023-09-14 09:28:20.232417+02 +proj-cardiac-test-partial-2 f 25 2023-09-14 09:30:47.026409+02 +proj-cardiac-tiny-2 f 26 2023-09-14 09:39:41.581472+02 +proj-cardio-2x2-1 f 27 2023-09-14 09:44:13.313113+02 +proj-cardio-2x2-zenodo-subset-1 f 28 2023-09-14 09:44:44.589979+02 +proj-multiplex-2 f 29 2023-09-14 09:46:24.672629+02 +proj-reversed_1 f 30 2023-09-14 09:46:46.420447+02 +proj-no_illum_corr-2 f 31 2023-09-14 09:47:28.329188+02 +proj-with_illum_corr_2 f 32 2023-09-14 09:48:03.156404+02 +proj-no_illum_corr_fullWell-1 f 33 2023-09-14 09:48:21.646482+02 +proj-with_illum_corr_fullWell-1 f 34 2023-09-14 09:48:38.746527+02 +proj-2D_to_3D_workflow_1 f 35 2023-09-14 09:49:15.33797+02 +20230920_Demo f 41 2023-09-20 14:58:04.665133+02 +TestScmultiplex f 49 2023-09-29 17:29:54.377672+02 +2D_to_3D_test f 50 2023-09-29 18:52:57.24979+02 +proj-cardiac-tiny-1312 f 53 2023-10-20 12:00:30.51846+02 +Sana multiplexing test f 56 2023-10-25 14:45:26.35285+02 +\. + + +-- +-- Data for Name: projectv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.projectv2 (id, name, timestamp_created) FROM stdin; +1 MyProject_uv 2024-04-24 12:54:43.995984+02 +\. + + +-- +-- Data for Name: resource; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.resource (path, id, dataset_id) FROM stdin; +/tmp/__REDACTED_RESOURCE_PATH__ 1 1 +/tmp/__REDACTED_RESOURCE_PATH__ 2 2 +/tmp/__REDACTED_RESOURCE_PATH__ 3 3 +/tmp/__REDACTED_RESOURCE_PATH__ 4 4 +/tmp/__REDACTED_RESOURCE_PATH__ 5 5 +/tmp/__REDACTED_RESOURCE_PATH__ 6 6 +/tmp/__REDACTED_RESOURCE_PATH__ 7 7 +/tmp/__REDACTED_RESOURCE_PATH__ 8 8 +/tmp/__REDACTED_RESOURCE_PATH__ 9 9 +/tmp/__REDACTED_RESOURCE_PATH__ 10 10 +/tmp/__REDACTED_RESOURCE_PATH__ 11 11 +/tmp/__REDACTED_RESOURCE_PATH__ 12 12 +/tmp/__REDACTED_RESOURCE_PATH__ 13 13 +/tmp/__REDACTED_RESOURCE_PATH__ 14 14 +/tmp/__REDACTED_RESOURCE_PATH__ 18 19 +/tmp/__REDACTED_RESOURCE_PATH__ 17 20 +/tmp/__REDACTED_RESOURCE_PATH__ 34 38 +/tmp/__REDACTED_RESOURCE_PATH__ 35 38 +/tmp/__REDACTED_RESOURCE_PATH__ 36 38 +/tmp/__REDACTED_RESOURCE_PATH__ 37 39 +/tmp/__REDACTED_RESOURCE_PATH__ 38 40 +/tmp/__REDACTED_RESOURCE_PATH__ 39 40 +/tmp/__REDACTED_RESOURCE_PATH__ 40 40 +/tmp/__REDACTED_RESOURCE_PATH__ 41 41 +/tmp/__REDACTED_RESOURCE_PATH__ 42 42 +/tmp/__REDACTED_RESOURCE_PATH__ 43 43 +/tmp/__REDACTED_RESOURCE_PATH__ 44 44 +/tmp/__REDACTED_RESOURCE_PATH__ 45 45 +/tmp/__REDACTED_RESOURCE_PATH__ 46 46 +/tmp/__REDACTED_RESOURCE_PATH__ 47 47 +/tmp/__REDACTED_RESOURCE_PATH__ 52 51 +/tmp/__REDACTED_RESOURCE_PATH__ 53 51 +/tmp/__REDACTED_RESOURCE_PATH__ 57 52 +/tmp/__REDACTED_RESOURCE_PATH__ 62 57 +/tmp/__REDACTED_RESOURCE_PATH__ 63 58 +/tmp/__REDACTED_RESOURCE_PATH__ 64 59 +/tmp/__REDACTED_RESOURCE_PATH__ 65 60 +/tmp/__REDACTED_RESOURCE_PATH__ 66 61 +/tmp/__REDACTED_RESOURCE_PATH__ 67 62 +/tmp/__REDACTED_RESOURCE_PATH__ 68 63 +/tmp/__REDACTED_RESOURCE_PATH__ 69 64 +/tmp/__REDACTED_RESOURCE_PATH__ 70 65 +/tmp/__REDACTED_RESOURCE_PATH__ 71 66 +/tmp/__REDACTED_RESOURCE_PATH__ 72 67 +/tmp/__REDACTED_RESOURCE_PATH__ 73 68 +/tmp/__REDACTED_RESOURCE_PATH__ 74 69 +/tmp/__REDACTED_RESOURCE_PATH__ 75 69 +/tmp/__REDACTED_RESOURCE_PATH__ 76 69 +/tmp/__REDACTED_RESOURCE_PATH__ 77 70 +/tmp/__REDACTED_RESOURCE_PATH__ 78 71 +/tmp/__REDACTED_RESOURCE_PATH__ 79 71 +/tmp/__REDACTED_RESOURCE_PATH__ 80 71 +/tmp/__REDACTED_RESOURCE_PATH__ 81 72 +/tmp/__REDACTED_RESOURCE_PATH__ 82 73 +/tmp/__REDACTED_RESOURCE_PATH__ 83 74 +/tmp/__REDACTED_RESOURCE_PATH__ 84 75 +/tmp/__REDACTED_RESOURCE_PATH__ 85 76 +/tmp/__REDACTED_RESOURCE_PATH__ 86 77 +/tmp/__REDACTED_RESOURCE_PATH__ 87 78 +/tmp/__REDACTED_RESOURCE_PATH__ 88 79 +/tmp/__REDACTED_RESOURCE_PATH__ 89 80 +/tmp/__REDACTED_RESOURCE_PATH__ 90 81 +/tmp/__REDACTED_RESOURCE_PATH__ 92 82 +/tmp/__REDACTED_RESOURCE_PATH__ 93 83 +/tmp/__REDACTED_RESOURCE_PATH__ 94 84 +/tmp/__REDACTED_RESOURCE_PATH__ 95 85 +/tmp/__REDACTED_RESOURCE_PATH__ 96 86 +/tmp/__REDACTED_RESOURCE_PATH__ 97 87 +/tmp/__REDACTED_RESOURCE_PATH__ 98 88 +/tmp/__REDACTED_RESOURCE_PATH__ 99 89 +/tmp/__REDACTED_RESOURCE_PATH__ 106 96 +/tmp/__REDACTED_RESOURCE_PATH__ 113 102 +/tmp/__REDACTED_RESOURCE_PATH__ 133 119 +/tmp/__REDACTED_RESOURCE_PATH__ 134 120 +/tmp/__REDACTED_RESOURCE_PATH__ 135 121 +/tmp/__REDACTED_RESOURCE_PATH__ 136 122 +/tmp/__REDACTED_RESOURCE_PATH__ 141 126 +/tmp/__REDACTED_RESOURCE_PATH__ 142 127 +/tmp/__REDACTED_RESOURCE_PATH__ 150 130 +/tmp/__REDACTED_RESOURCE_PATH__ 151 130 +/tmp/__REDACTED_RESOURCE_PATH__ 152 130 +/tmp/__REDACTED_RESOURCE_PATH__ 153 130 +/tmp/__REDACTED_RESOURCE_PATH__ 154 130 +/tmp/__REDACTED_RESOURCE_PATH__ 155 130 +/tmp/__REDACTED_RESOURCE_PATH__ 156 131 +\. + + +-- +-- Data for Name: state; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.state (data, "timestamp", id) FROM stdin; +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-06-27 17:48:35.875716+02 1 +{"status": "OK", "package": "scmultiplex", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-29 17:24:32.807247+02 12 +{"status": "OK", "package": "fractal_faim_hcs", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-06-27 17:57:12.915361+02 2 +{"status": "OK", "package": "scmultiplex", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-06-30 11:00:38.762334+02 3 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-10-09 10:39:31.578645+02 13 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-12 16:51:44.008177+02 4 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-12 18:04:38.871433+02 5 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-10-20 11:53:49.335269+02 14 +{"status": "fail", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-14 09:15:47.222966+02 6 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-14 09:20:11.03766+02 7 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-10-26 13:43:03.733754+02 15 +{"status": "OK", "package": "fractal_faim_hcs", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-19 16:13:47.012159+02 8 +{"status": "OK", "package": "fractal-tasks-core", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-28 09:22:48.949454+02 9 +{"status": "OK", "package": "scmultiplex", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-29 16:57:18.190225+02 10 +{"status": "OK", "package": "scmultiplex", "venv_path": "/tmp/__REDACTED_VENV_PATH__", "task_list": [], "log": "__REDACTED_LOG__", "info": "__REDACTED_INFO__"} 2023-09-29 17:12:51.180004+02 11 +\. + + +-- +-- Data for Name: task; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.task (meta, source, id, name, command, input_type, output_type, owner, version, args_schema, args_schema_version, docs_info, docs_link, is_v2_compatible) FROM stdin; +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::cellpose_segmentation 5 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.0 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose 0 to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either ``wavelength_id`` (e.g. ``A01_C01``) or ``label`` (e.g. ``DAPI``)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as ``channel``). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have ``ROI`` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. ``\\"organoids\\"``)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If ``True``, try to use masked loading and fall back to ``use_masks=False`` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within organoid_ROI_table)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the ``level`` that was selected. The rescaled value is passed as the diameter to the ``CellposeModel.eval`` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of ``CellposeModel`` class. Defines which model should be used. Typical choices are nuclei, cyto, cyto2 etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of ``CellposeModel`` class (takes precedence over ``model_type``). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of ``CellposeModel.eval`` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of ``CellposeModel`` class. Minimum size of the segmented objects (in pixels). Use -1 to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of ``CellposeModel`` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for nuclei, cyto & cyto2, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If ``False``, always use the CPU; if ``True``, use the GPU if possible (as defined in ``cellpose.core.use_gpu()``) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure 1 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.10.0 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/some/path/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of ``OmeroChannel`` s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 \N \N f +{"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000} __REDACTED_SOURCE_11__ 11 Convert 2D Segmentation to 3D /tmp/__REDACTED_COMMAND__ image zarr __REDACTED_OWNER__ 0.0.1 {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name", "ROI_tables_to_copy"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::maximum_intensity_projection 36 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Perform maximum-intensity projection along Z axis.\n\nNote: this task stores the output in a new zarr file. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::napari_workflows_wrapper 7 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.0 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of ``NapariWorkflowsInput`` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of ``NapariWorkflowsOutput`` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Example: \\"FOV_ROI_table\\" => loop over the field of views \\"organoid_ROI_table\\" => loop over the organoid ROI table generated by another task \\"well_ROI_table\\" => process the whole well as one image"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose 0 to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If ``True``, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either 2 or 3). Useful when loading 2D images that are stored in a 3D array as (1, size_x, size_y) [which is the default way Fractal stored 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to 2 when loading a 2D OME-Zarr that is saved as (size_x, size_y)."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the ``input_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (supported: ``image`` or ``label``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the ``output_specs`` argument in ``napari_workflows_wrapper``.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (supported: ``label`` or ``dataframe``)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::create_ome-zarr_structure_(multiplexing) 8 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.10.0 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files ``MeasurementData.mlf`` and ``MeasurementDetail.mrf`` (if present). Example: ``[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`` (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)"}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of ``OmeroChannel``s, where each channel must include the ``wavelength_id`` attribute and where the ``wavelength_id`` values must be unique across each list. Dictionary keys represent channel indices (``\\"0\\",\\"1\\",..``)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: ``image_glob_pattern=[\\"*_B03_*\\"]`` => only process well B03 ``image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]`` => only process well C09, field of view 16 and Z planes 0 - 59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to 5, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to 2, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If ``None``, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like ``(acquisition, path)`` with ``acquisition`` a string and ``path`` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to ``0`` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional ``Window`` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (e.g. ``00FFFF``)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute. "}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::napari_workflows_wrapper 39 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 Run a napari-workflow on the ROIs of a single OME-NGFF image.\n\nThis task takes images and labels and runs a napari-workflow on them that\ncan produce a label and tables as output.\n\nExamples of allowed entries for `input_specs` and `output_specs`:\n\n```\ninput_specs = {\n "in_1": {"type": "image", "channel": {"wavelength_id": "A01_C02"}},\n "in_2": {"type": "image", "channel": {"label": "DAPI"}},\n "in_3": {"type": "label", "label_name": "label_DAPI"},\n}\n\noutput_specs = {\n "out_1": {"type": "label", "label_name": "label_DAPI_new"},\n "out_2": {"type": "dataframe", "table_name": "measurements"},\n}\n``` https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::create_ome-zarr_structure 86 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.13.1 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create a OME-NGFF zarr folder, without reading/writing image data.\n\nFind plates (for each folder in input_paths):\n\n- glob image files,\n- parse metadata from image filename to identify plates,\n- identify populated channels.\n\nCreate a zarr folder (for each plate):\n\n- parse mlf metadata,\n- identify wells and field of view (FOV),\n- create FOV ZARR,\n- verify that channels are uniform (i.e., same channels). https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:napari_workflows_wrapper 28 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0a2 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure_(multiplexing) 29 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.11.0a2 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_local:fractal_faim_hcs:0.2.0a0:::convert_md_to_ome-zarr 45 Convert MD to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.2.0a0 {"title": "MdToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "type": "string", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "type": "object", "description": "Metadata dictionary (Fractal managed)"}, "grid_montage": {"title": "Grid Montage", "default": true, "type": "boolean", "description": "Force FOVs into closest grid cells"}, "memory_efficient": {"title": "Memory Efficient", "default": false, "type": "boolean", "description": "Load images via dask (more memory efficient for 3D)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Converts the image data from the MD image Xpress into OME-Zarr. https://github.com/jluethi/fractal-faim-hcs f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:cellpose_segmentation 18 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.1 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 \N \N f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:napari_workflows_wrapper 20 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.1 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:create_ome-zarr_structure_(multiplexing) 21 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.10.1 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:create_ome-zarr_structure 22 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.11.0a2 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::maximum_intensity_projection 76 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Perform maximum-intensity projection along Z axis.\n\nNote: this task stores the output in a new zarr file. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::convert_yokogawa_to_ome-zarr 74 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Convert Yokogawa output (png, tif) to zarr file.\n\nThis task is typically run after Create OME-Zarr or\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\nwere prepared. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr f +{"cpus_per_task": 1, "mem": 1000} __REDACTED_SOURCE_12__ 12 Convert Metadata Components from 2D to 3D /tmp/__REDACTED_COMMAND__ image zarr __REDACTED_OWNER__ 0.0.1 {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::copy_ome-zarr_structure 3 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.0 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If ``True``, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform ``plate.zarr`` into ``plate_suffix.zarr``. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if ``project_to_2D=True``."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::apply_registration_to_roi_tables 55 Apply Registration to ROI Tables /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Applies pre-calculated registration to ROI tables.\n\nApply pre-calculated registration such that resulting ROIs contain\nthe consensus align region between all cycles.\n\nParallelization level: well https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:cellpose_segmentation 26 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0a2 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::copy_ome-zarr_structure 35 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 Duplicate an input zarr structure to a new path.\n\nThis task copies all the structure, but none of the image data:\n\n- For each plate, create a new zarr group with the same attributes as\n the original one.\n- For each well (in each plate), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), copy the relevant AnnData tables from\n the original source.\n\nNote: this task makes use of methods from the `Attributes` class, see\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::cellpose_segmentation 37 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 Run cellpose segmentation on the ROIs of a single OME-Zarr image. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::illumination_correction 38 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 Applies illumination correction to the images in the OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/illumination_correction/#fractal_tasks_core.tasks.illumination_correction.illumination_correction f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::create_ome-zarr_structure 73 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.13.0 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create a OME-NGFF zarr folder, without reading/writing image data.\n\nFind plates (for each folder in input_paths):\n\n- glob image files,\n- parse metadata from image filename to identify plates,\n- identify populated channels.\n\nCreate a zarr folder (for each plate):\n\n- parse mlf metadata,\n- identify wells and field of view (FOV),\n- create FOV ZARR,\n- verify that channels are uniform (i.e., same channels). https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr f +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::calculate_registration_(image-based) 41 Calculate registration (image-based) /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false} pydantic_v1 Calculate registration based on images\n\nThis task consists of 3 parts:\n\n1. Loading the images of a given ROI (=> loop over ROIs)\n2. Calculating the transformation for that ROI\n3. Storing the calculated transformation in the ROI table\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::cellpose_segmentation 50 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 Run cellpose segmentation on the ROIs of a single OME-Zarr image. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::create_ome-zarr_structure_(multiplexing) 40 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.11.0 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create OME-NGFF structure and metadata to host a multiplexing dataset.\n\nThis task takes a set of image folders (i.e. different acquisition cycles)\nand build the internal structure and metadata of a OME-NGFF zarr group,\nwithout actually loading/writing the image data.\n\nEach element in input_paths should be treated as a different acquisition. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr_multiplex/#fractal_tasks_core.tasks.create_ome_zarr_multiplex.create_ome_zarr_multiplex f +{"cpus_per_task": 1, "mem": 1000} pip_local:fractal_faim_hcs:0.2.0a0:::create_ome-zarr_md 44 Create OME-Zarr MD /tmp/__REDACTED_COMMAND__ image zarr \N 0.2.0a0 {"title": "CreateOmeZarrMd", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "type": "object", "description": "Metadata dictionary (Fractal managed)"}, "zarr_name": {"title": "Zarr Name", "default": "Plate", "type": "string", "description": "Name of the zarr plate file that will be created"}, "mode": {"title": "Mode", "default": "all", "type": "string", "description": "Mode can be 4 values: \\"z-steps\\" (only parse the 3D data), \\"top-level\\" (only parse the 2D data), \\"all\\" (parse both), \\"zmb\\" (zmb-parser, detect mode automatically)"}, "layout": {"title": "Layout", "default": 96, "type": "integer", "description": "Plate layout for the Zarr file. Valid options are 96 and 384"}, "query": {"title": "Query", "default": "", "type": "string", "description": "Pandas query to filter intput-filenames"}, "order_name": {"title": "Order Name", "default": "example-order", "type": "string", "description": "Name of the order"}, "barcode": {"title": "Barcode", "default": "example-barcode", "type": "string", "description": "Barcode of the plate"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "Whether to overwrite the zarr file if it already exists"}, "num_levels": {"title": "Num Levels", "default": 5, "description": "Number of levels to generate in the zarr file"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 Create OME-Zarr plate from MD Image Xpress files. https://github.com/jluethi/fractal-faim-hcs f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::napari_workflows_wrapper 79 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 Run a napari-workflow on the ROIs of a single OME-NGFF image.\n\nThis task takes images and labels and runs a napari-workflow on them that\ncan produce a label and tables as output.\n\nExamples of allowed entries for `input_specs` and `output_specs`:\n\n```\ninput_specs = {\n "in_1": {"type": "image", "channel": {"wavelength_id": "A01_C02"}},\n "in_2": {"type": "image", "channel": {"label": "DAPI"}},\n "in_3": {"type": "label", "label_name": "label_DAPI"},\n}\n\noutput_specs = {\n "out_1": {"type": "label", "label_name": "label_DAPI_new"},\n "out_2": {"type": "dataframe", "table_name": "measurements"},\n}\n``` https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_local:fractal_faim_hcs:0.1.dev27+g1458b59:::convert_md_to_ome-zarr 10 Convert MD to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.1.0 {"additionalProperties": false, "properties": {"component": {"description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)", "title": "Component", "type": "string"}, "input_paths": {"description": "List of paths to the input files (Fractal managed)", "items": {"type": "string"}, "title": "Input Paths", "type": "array"}, "metadata": {"description": "Metadata dictionary (Fractal managed)", "title": "Metadata", "type": "object"}, "output_path": {"description": "Path to the output file (Fractal managed)", "title": "Output Path", "type": "string"}}, "required": ["input_paths", "output_path", "component", "metadata"], "title": "MdToOmeZarr", "type": "object"} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::create_ome-zarr_structure 46 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.12.0 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create a OME-NGFF zarr folder, without reading/writing image data.\n\nFind plates (for each folder in input_paths):\n\n- glob image files,\n- parse metadata from image filename to identify plates,\n- identify populated channels.\n\nCreate a zarr folder (for each plate):\n\n- parse mlf metadata,\n- identify wells and field of view (FOV),\n- create FOV ZARR,\n- verify that channels are uniform (i.e., same channels). https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::copy_ome-zarr_structure 48 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 Duplicate an input zarr structure to a new path.\n\nThis task copies all the structure, but none of the image data:\n\n- For each plate, create a new zarr group with the same attributes as\n the original one.\n- For each well (in each plate), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), copy the relevant AnnData tables from\n the original source.\n\nNote: this task makes use of methods from the `Attributes` class, see\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::convert_yokogawa_to_ome-zarr 61 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Convert Yokogawa output (png, tif) to zarr file.\n\nThis task is typically run after Create OME-Zarr or\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\nwere prepared. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::napari_workflows_wrapper 52 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 Run a napari-workflow on the ROIs of a single OME-NGFF image.\n\nThis task takes images and labels and runs a napari-workflow on them that\ncan produce a label and tables as output.\n\nExamples of allowed entries for `input_specs` and `output_specs`:\n\n```\ninput_specs = {\n "in_1": {"type": "image", "channel": {"wavelength_id": "A01_C02"}},\n "in_2": {"type": "image", "channel": {"label": "DAPI"}},\n "in_3": {"type": "label", "label_name": "label_DAPI"},\n}\n\noutput_specs = {\n "out_1": {"type": "label", "label_name": "label_DAPI_new"},\n "out_2": {"type": "dataframe", "table_name": "measurements"},\n}\n``` https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::create_ome-zarr_structure_(multiplexing) 53 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.12.0 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create OME-NGFF structure and metadata to host a multiplexing dataset.\n\nThis task takes a set of image folders (i.e. different acquisition cycles)\nand build the internal structure and metadata of a OME-NGFF zarr group,\nwithout actually loading/writing the image data.\n\nEach element in input_paths should be treated as a different acquisition. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr_multiplex/#fractal_tasks_core.tasks.create_ome_zarr_multiplex.create_ome_zarr_multiplex f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::napari_workflows_wrapper 66 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 Run a napari-workflow on the ROIs of a single OME-NGFF image.\n\nThis task takes images and labels and runs a napari-workflow on them that\ncan produce a label and tables as output.\n\nExamples of allowed entries for `input_specs` and `output_specs`:\n\n```\ninput_specs = {\n "in_1": {"type": "image", "channel": {"wavelength_id": "A01_C02"}},\n "in_2": {"type": "image", "channel": {"label": "DAPI"}},\n "in_3": {"type": "label", "label_name": "label_DAPI"},\n}\n\noutput_specs = {\n "out_1": {"type": "label", "label_name": "label_DAPI_new"},\n "out_2": {"type": "dataframe", "table_name": "measurements"},\n}\n``` https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper f +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} pip_local:scmultiplex:0.4.dev137+g4b46ca5:fractal-tasks::scmultiplex_measurements 59 scMultipleX Measurements /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.4.1 {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"}. To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "well_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 Measurements of intensities and morphologies\n\nWrapper task for scmultiplex measurements for Fractal to generate\nmeasurements of intensities and morphologies https://github.com/fmi-basel/gliberal-scMultipleX f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::create_ome-zarr_structure 60 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.12.2 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create a OME-NGFF zarr folder, without reading/writing image data.\n\nFind plates (for each folder in input_paths):\n\n- glob image files,\n- parse metadata from image filename to identify plates,\n- identify populated channels.\n\nCreate a zarr folder (for each plate):\n\n- parse mlf metadata,\n- identify wells and field of view (FOV),\n- create FOV ZARR,\n- verify that channels are uniform (i.e., same channels). https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::copy_ome-zarr_structure 62 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 Duplicate an input zarr structure to a new path.\n\nThis task copies all the structure, but none of the image data:\n\n- For each plate, create a new zarr group with the same attributes as\n the original one.\n- For each well (in each plate), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), copy the relevant AnnData tables from\n the original source.\n\nNote: this task makes use of methods from the `Attributes` class, see\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::create_ome-zarr_structure_(multiplexing) 93 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.13.1 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create OME-NGFF structure and metadata to host a multiplexing dataset.\n\nThis task takes a set of image folders (i.e. different acquisition cycles)\nand build the internal structure and metadata of a OME-NGFF zarr group,\nwithout actually loading/writing the image data.\n\nEach element in input_paths should be treated as a different acquisition. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr_multiplex/#fractal_tasks_core.tasks.create_ome_zarr_multiplex.create_ome_zarr_multiplex f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::apply_registration_to_image 56 Apply Registration to Image /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false} pydantic_v1 Apply registration to images by using a registered ROI table\n\nThis task consists of 4 parts:\n\n1. Mask all regions in images that are not available in the\nregistered ROI table and store each cycle aligned to the\nreference_cycle (by looping over ROIs).\n2. Do the same for all label images.\n3. Copy all tables from the non-aligned image to the aligned image\n(currently only works well if the only tables are well & FOV ROI tables\n(registered and original). Not implemented for measurement tables and\nother ROI tables).\n4. Clean up: Delete the old, non-aligned image and rename the new,\naligned image to take over its place.\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::cellpose_segmentation 64 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 Run cellpose segmentation on the ROIs of a single OME-Zarr image. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::create_ome-zarr_structure_(multiplexing) 67 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.12.2 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create OME-NGFF structure and metadata to host a multiplexing dataset.\n\nThis task takes a set of image folders (i.e. different acquisition cycles)\nand build the internal structure and metadata of a OME-NGFF zarr group,\nwithout actually loading/writing the image data.\n\nEach element in input_paths should be treated as a different acquisition. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr_multiplex/#fractal_tasks_core.tasks.create_ome_zarr_multiplex.create_ome_zarr_multiplex f +{"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000} __REDACTED_SOURCE_71__ 71 Convert 2D Segmentation to 3D /tmp/__REDACTED_COMMAND__ zarr zarr __REDACTED_OWNER__ 0.1.0 {"title": "Convert2dSegmentationTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "component": {"title": "Component", "description": "Component name, e.g. \\"plate_name.zarr/B/03/0\\" (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "label_name": {"title": "Label Name", "type": "string", "description": "Name of the label to copy from 2D OME-Zarr to 3D OME-Zarr"}, "ROI_tables_to_copy": {"title": "Roi Tables To Copy", "type": "array", "items": {"type": "string"}, "description": "List of ROI table names to copy from 2D OME-Zarr to 3D OME-Zarr"}, "new_label_name": {"title": "New Label Name", "type": "string", "description": "Optionally overwriting the name of the label in the 3D OME-Zarr"}, "new_table_names": {"title": "New Table Names", "type": "array", "items": {}, "description": "Optionally overwriting the names of the ROI tables in the 3D OME-Zarr"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Level of the 2D OME-Zarr label to copy from"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr to copy from"}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite existing label and ROI tables in the 3D OME-Zarr"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_name"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000} __REDACTED_SOURCE_72__ 72 Convert Metadata Components from 2D to 3D /tmp/__REDACTED_COMMAND__ zarr zarr __REDACTED_OWNER__ 0.1.0 {"title": "ConvertMetadataComponents2dTo3d", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "description": "List of paths to the input files (Fractal managed)"}, "output_path": {"title": "Output Path", "description": "Path to the output file (Fractal managed)"}, "metadata": {"title": "Metadata", "description": "Metadata dictionary (Fractal managed)"}, "from_2d_to_3d": {"title": "From 2D To 3D", "default": true, "type": "boolean", "description": "If True, removes the suffix. If False, adds the suffix to the metadata"}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "Suffix of the 2D OME-Zarr"}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::maximum_intensity_projection 4 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.0 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in that folder (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the copy_ome_zarr task before to point to a new mip Zarr file. Example: \\"some_plate_mip.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"plate\\": List of plates. Example: [\\"MyPlate.zarr\\"] \\"well\\": List of wells in the OME-Zarr plate. [\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"] \\"image\\": List of images in the OME-Zarr plate. Example: [\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"] (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} pip_local:scmultiplex:0.4.dev112+gea45033:fractal-tasks::scmultiplex_measurements 13 scMultipleX Measurements /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.4.0 {"title": "ScmultiplexFeatureMeasurements", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "TBD (default arg for Fractal tasks)"}, "output_path": {"title": "Output Path", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "component": {"title": "Component", "type": "string", "description": "TBD (default arg for Fractal tasks)"}, "metadata": {"title": "Metadata", "type": "object", "description": "TBD (default arg for Fractal tasks)"}, "label_image": {"title": "Label Image", "type": "string", "description": "Name of the label image to use for measurements. Needs to exist in OME-Zarr file"}, "output_table_name": {"title": "Output Table Name", "type": "string", "description": "Name of the output AnnData table to save the measurements in. A table of this name can't exist yet in the OME-Zarr file"}, "input_channels": {"title": "Input Channels", "type": "object", "additionalProperties": {"$ref": "#/definitions/Channel"}, "description": "Dictionary of channels to measure. Keys are the names that will be added as prefixes to the measurements, values are another dictionary containing either wavelength_id or channel_label information to allow Fractal to find the correct channel (but not both). Example: {\\"C01\\": {\\"wavelength_id\\": \\"A01_C01\\"} To only measure morphology, provide an empty dict"}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table to loop over. Needs to exists as a ROI table in the OME-Zarr file"}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Resolution of the intensity image to load for measurements. Only tested for level 0"}, "label_level": {"title": "Label Level", "default": 0, "type": "integer", "description": "Resolution of the label image to load for measurements."}, "measure_morphology": {"title": "Measure Morphology", "default": true, "type": "boolean", "description": "Set to True to measure morphology features"}, "allow_duplicate_labels": {"title": "Allow Duplicate Labels", "default": false, "type": "boolean", "description": "Set to True to allow saving measurement tables with non-unique label values. Can happen when segmentation is run on a different ROI than the measurements (e.g. segment per well, but measure per FOV)"}}, "required": ["input_paths", "output_path", "component", "metadata", "label_image", "output_table_name"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either ``wavelength_id`` or ``label``.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. ``A01_C01``."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel"}}}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::create_ome-zarr_structure_(multiplexing) 80 Create OME-ZARR structure (multiplexing) /tmp/__REDACTED_COMMAND__ image zarr \N 0.13.0 {"title": "CreateOmeZarrMultiplex", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Each element of the list is treated as another cycle of the multiplexing data, the cycles are ordered by their order in this list. Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/path/cycle1/\\", \\"/path/cycle2/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the `/some/path/`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "object", "additionalProperties": {"type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}}, "description": "A dictionary of lists of `OmeroChannel`s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across each list. Dictionary keys represent channel indices (`\\"0\\",\\"1\\",..`)."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)."}, "metadata_table_files": {"title": "Metadata Table Files", "type": "object", "additionalProperties": {"type": "string"}, "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, a dictionary of key-value pairs like `(acquisition, path)` with `acquisition` a string and `path` pointing to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create OME-NGFF structure and metadata to host a multiplexing dataset.\n\nThis task takes a set of image folders (i.e. different acquisition cycles)\nand build the internal structure and metadata of a OME-NGFF zarr group,\nwithout actually loading/writing the image data.\n\nEach element in input_paths should be treated as a different acquisition. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr_multiplex/#fractal_tasks_core.tasks.create_ome_zarr_multiplex.create_ome_zarr_multiplex f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::cellpose_segmentation 77 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 Run cellpose segmentation on the ROIs of a single OME-Zarr image. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::copy_ome-zarr_structure 75 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 Duplicate an input zarr structure to a new path.\n\nThis task copies all the structure, but none of the image data:\n\n- For each plate, create a new zarr group with the same attributes as\n the original one.\n- For each well (in each plate), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), copy the relevant AnnData tables from\n the original source.\n\nNote: this task makes use of methods from the `Attributes` class, see\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr f +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::napari_workflows_wrapper 92 Napari workflows wrapper /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "NapariWorkflowsWrapper", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. his task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "workflow_file": {"title": "Workflow File", "type": "string", "description": "Absolute path to napari-workflows YAML file"}, "input_specs": {"title": "Input Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsInput"}, "description": "A dictionary of `NapariWorkflowsInput` values."}, "output_specs": {"title": "Output Specs", "type": "object", "additionalProperties": {"$ref": "#/definitions/NapariWorkflowsOutput"}, "description": "A dictionary of `NapariWorkflowsOutput` values."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply napari workflows. Examples: `FOV_ROI_table` => loop over the field of views; `organoid_ROI_table` => loop over the organoid ROI table (generated by another task); `well_ROI_table` => process the whole well as one image."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be used as input for napari-workflows. Choose `0` to process at full resolution. Levels > 0 are currently only supported for workflows that only have intensity images as input and only produce a label images as output."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique across all ROIs in the well."}, "expected_dimensions": {"title": "Expected Dimensions", "default": 3, "type": "integer", "description": "Expected dimensions (either `2` or `3`). Useful when loading 2D images that are stored in a 3D array with shape `(1, size_x, size_y)` [which is the default way Fractal stores 2D images], but you want to make sure the napari workflow gets a 2D array to process. Also useful to set to `2` when loading a 2D OME-Zarr that is saved as `(size_x, size_y)`."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "workflow_file", "input_specs", "output_specs"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}, "NapariWorkflowsInput": {"title": "NapariWorkflowsInput", "description": "A value of the `input_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["image", "label"], "type": "string", "description": "Input type (either `image` or `label`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label inputs only)."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Channel object (for image inputs only)."}}, "required": ["type"]}, "NapariWorkflowsOutput": {"title": "NapariWorkflowsOutput", "description": "A value of the `output_specs` argument in `napari_workflows_wrapper`.", "type": "object", "properties": {"type": {"title": "Type", "enum": ["label", "dataframe"], "type": "string", "description": "Output type (either `label` or `dataframe`)."}, "label_name": {"title": "Label Name", "type": "string", "description": "Label name (for label outputs only)."}, "table_name": {"title": "Table Name", "type": "string", "description": "Table name (for dataframe outputs only)."}}, "required": ["type"]}}} pydantic_v1 Run a napari-workflow on the ROIs of a single OME-NGFF image.\n\nThis task takes images and labels and runs a napari-workflow on them that\ncan produce a label and tables as output.\n\nExamples of allowed entries for `input_specs` and `output_specs`:\n\n```\ninput_specs = {\n "in_1": {"type": "image", "channel": {"wavelength_id": "A01_C02"}},\n "in_2": {"type": "image", "channel": {"label": "DAPI"}},\n "in_3": {"type": "label", "label_name": "label_DAPI"},\n}\n\noutput_specs = {\n "out_1": {"type": "label", "label_name": "label_DAPI_new"},\n "out_2": {"type": "dataframe", "table_name": "measurements"},\n}\n``` https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/napari_workflows_wrapper/#fractal_tasks_core.tasks.napari_workflows_wrapper.napari_workflows_wrapper f +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::calculate_registration_(image-based) 81 Calculate registration (image-based) /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false} pydantic_v1 Calculate registration based on images\n\nThis task consists of 3 parts:\n\n1. Loading the images of a given ROI (=> loop over ROIs)\n2. Calculating the transformation for that ROI\n3. Storing the calculated transformation in the ROI table\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based f +{"parallelization_level": "image", "cpus_per_task": 8, "mem": 32000} __REDACTED_SOURCE_85__ 85 Ilastik segmentation (2D) /tmp/__REDACTED_COMMAND__ zarr zarr __REDACTED_OWNER__ 0.1.0 {"title": "IlastikSegmentationFractal", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "You must specify the path of a custom trained ilastik model."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "level": {"title": "Level", "default": 0, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Ilastik segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "default": "pixel_seg", "type": "string", "description": "Name of the output label image (e.g. `\\"speckles\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "ilastik_threshold": {"title": "Ilastik Threshold", "default": 10000, "type": "integer", "description": "threshold level to turn objects above a probability from ilastik into a label image of segmented objects. "}, "min_size": {"title": "Min Size", "default": 3, "type": "integer", "description": "Minimum size of the segmented objects (in pixels)."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "pretrained_model", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::copy_ome-zarr_structure 88 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 Duplicate an input zarr structure to a new path.\n\nThis task copies all the structure, but none of the image data:\n\n- For each plate, create a new zarr group with the same attributes as\n the original one.\n- For each well (in each plate), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), create a new zarr subgroup with the\n same attributes as the original one.\n- For each image (in each well), copy the relevant AnnData tables from\n the original source.\n\nNote: this task makes use of methods from the `Attributes` class, see\nhttps://zarr.readthedocs.io/en/stable/api/attrs.html. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/copy_ome_zarr/#fractal_tasks_core.tasks.copy_ome_zarr.copy_ome_zarr f +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::cellpose_segmentation 90 Cellpose Segmentation /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "CellposeSegmentation", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "level": {"title": "Level", "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}, "channel": {"$ref": "#/definitions/Channel", "title": "Channel", "description": "Primary channel for segmentation; requires either `wavelength_id` (e.g. `A01_C01`) or `label` (e.g. `DAPI`)."}, "channel2": {"$ref": "#/definitions/Channel", "title": "Channel2", "description": "Second channel for segmentation (in the same format as `channel`). If specified, cellpose runs in dual channel mode. For dual channel segmentation of cells, the first channel should contain the membrane marker, the second channel should contain the nuclear marker."}, "input_ROI_table": {"title": "Input Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to apply Cellpose segmentation. Examples: `FOV_ROI_table` => loop over the field of views, `organoid_ROI_table` => loop over the organoid ROI table (generated by another task), `well_ROI_table` => process the whole well as one image."}, "output_ROI_table": {"title": "Output Roi Table", "type": "string", "description": "If provided, a ROI table with that name is created, which will contain the bounding boxes of the newly segmented labels. ROI tables should have `ROI` in their name."}, "output_label_name": {"title": "Output Label Name", "type": "string", "description": "Name of the output label image (e.g. `\\"organoids\\"`)."}, "use_masks": {"title": "Use Masks", "default": true, "type": "boolean", "description": "If `True`, try to use masked loading and fall back to `use_masks=False` if the ROI table is not suitable. Masked loading is relevant when only a subset of the bounding box should actually be processed (e.g. running within `organoid_ROI_table`)."}, "relabeling": {"title": "Relabeling", "default": true, "type": "boolean", "description": "If `True`, apply relabeling so that label values are unique for all objects in the well."}, "diameter_level0": {"title": "Diameter Level0", "default": 30.0, "type": "number", "description": "Expected diameter of the objects that should be segmented in pixels at level 0. Initial diameter is rescaled using the `level` that was selected. The rescaled value is passed as the diameter to the `CellposeModel.eval` method."}, "model_type": {"title": "Model Type", "default": "cyto2", "type": "string", "description": "Parameter of `CellposeModel` class. Defines which model should be used. Typical choices are `nuclei`, `cyto`, `cyto2`, etc."}, "pretrained_model": {"title": "Pretrained Model", "type": "string", "description": "Parameter of `CellposeModel` class (takes precedence over `model_type`). Allows you to specify the path of a custom trained cellpose model."}, "cellprob_threshold": {"title": "Cellprob Threshold", "default": 0.0, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between -6 to 6. From Cellpose documentation: \\"Decrease this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, increase this threshold if cellpose is returning too ROIs particularly from dim areas.\\""}, "flow_threshold": {"title": "Flow Threshold", "default": 0.4, "type": "number", "description": "Parameter of `CellposeModel.eval` method. Valid values between 0.0 and 1.0. From Cellpose documentation: \\"Increase this threshold if cellpose is not returning as many ROIs as you\\u2019d expect. Similarly, decrease this threshold if cellpose is returning too many ill-shaped ROIs.\\""}, "anisotropy": {"title": "Anisotropy", "type": "number", "description": "Ratio of the pixel sizes along Z and XY axis (ignored if the image is not three-dimensional). If `None`, it is inferred from the OME-NGFF metadata."}, "min_size": {"title": "Min Size", "default": 15, "type": "integer", "description": "Parameter of `CellposeModel` class. Minimum size of the segmented objects (in pixels). Use `-1` to turn off the size filter."}, "augment": {"title": "Augment", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose augmentation to tile images with overlap."}, "net_avg": {"title": "Net Avg", "default": false, "type": "boolean", "description": "Parameter of `CellposeModel` class. Whether to use cellpose net averaging to run the 4 built-in networks (useful for `nuclei`, `cyto` and `cyto2`, not sure it works for the others)."}, "use_gpu": {"title": "Use Gpu", "default": true, "type": "boolean", "description": "If `False`, always use the CPU; if `True`, use the GPU if possible (as defined in `cellpose.core.use_gpu()`) and fall-back to the CPU otherwise."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata", "level", "channel"], "additionalProperties": false, "definitions": {"Channel": {"title": "Channel", "description": "A channel which is specified by either `wavelength_id` or `label`.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}}}}} pydantic_v1 Run cellpose segmentation on the ROIs of a single OME-Zarr image. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/cellpose_segmentation/#fractal_tasks_core.tasks.cellpose_segmentation.cellpose_segmentation f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:illumination_correction 19 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.1 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If True, the results of this task will overwrite the input image data. This task is only implemented for ``overwrite=True`` at the moment."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::import_ome-zarr 97 Import OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "ImportOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "A length-one list with the parent folder of the OME-Zarr to be imported; e.g. `input_paths=[\\"/somewhere\\"]`, if the OME-Zarr path is `/somewhere/array.zarr`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Not used in this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Not used in this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "zarr_name": {"title": "Zarr Name", "type": "string", "description": "The OME-Zarr name, without its parent folder; e.g. `zarr_name=\\"array.zarr\\"`, if the OME-Zarr path is `/somewhere/array.zarr`."}, "add_image_ROI_table": {"title": "Add Image Roi Table", "default": true, "type": "boolean", "description": "Whether to add a `image_ROI_table` table to each image, with a single ROI covering the whole image."}, "add_grid_ROI_table": {"title": "Add Grid Roi Table", "default": true, "type": "boolean", "description": "Whether to add a `grid_ROI_table` table to each image, with the image split into a rectangular grid of ROIs."}, "grid_y_shape": {"title": "Grid Y Shape", "default": 2, "type": "integer", "description": "Y shape of the ROI grid in `grid_ROI_table`."}, "grid_x_shape": {"title": "Grid X Shape", "default": 2, "type": "integer", "description": "X shape of the ROI grid in `grid_ROI_table`."}, "update_omero_metadata": {"title": "Update Omero Metadata", "default": true, "type": "boolean", "description": "Whether to update Omero-channels metadata, to make them Fractal-compatible."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "Whether new ROI tables (added when `add_image_ROI_table` and/or `add_grid_ROI_table` are `True`) can overwite existing ones."}}, "required": ["input_paths", "output_path", "metadata", "zarr_name"], "additionalProperties": false} pydantic_v1 Import an OME-Zarr into Fractal.\n\nThe current version of this task:\n\n1. Creates the appropriate components-related metadata, needed for\n processing an existing OME-Zarr through Fractal.\n2. Optionally adds new ROI tables to the existing OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/import_ome_zarr/#fractal_tasks_core.tasks.import_ome_zarr.import_ome_zarr f +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::calculate_registration_(image-based) 68 Calculate registration (image-based) /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false} pydantic_v1 Calculate registration based on images\n\nThis task consists of 3 parts:\n\n1. Loading the images of a given ROI (=> loop over ROIs)\n2. Calculating the transformation for that ROI\n3. Storing the calculated transformation in the ROI table\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based f +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::apply_registration_to_roi_tables 95 Apply Registration to ROI Tables /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Applies pre-calculated registration to ROI tables.\n\nApply pre-calculated registration such that resulting ROIs contain\nthe consensus align region between all cycles.\n\nParallelization level: well https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables f +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_roi_tables 82 Apply Registration to ROI Tables /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Applies pre-calculated registration to ROI tables.\n\nApply pre-calculated registration such that resulting ROIs contain\nthe consensus align region between all cycles.\n\nParallelization level: well https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::illumination_correction 6 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.0 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the same folder as the input OME-Zarr file \\"/some/new_path\\" => puts the new OME-Zarr file into a new folder at ``/some/new_path`` (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)"}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the ``wavelength_id`` attributes of existing channels (e.g. ``A01_C01`` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to 0 if you don't want any background subtraction."}, "overwrite": {"title": "Overwrite", "default": true, "type": "boolean", "description": "If True, the results of this task will overwrite the input image data. This task is only implemented for ``overwrite=True`` at the moment."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: myplate_new_name.zarr/B/03/0/"}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::apply_registration_to_image 43 Apply Registration to Image /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server). `num_levels (int)`: number of pyramid levels in the image; this determines how many pyramid levels are built for the segmentation."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false} pydantic_v1 Apply registration to images by using a registered ROI table\n\nThis task consists of 4 parts:\n\n1. Mask all regions in images that are not available in the\nregistered ROI table and store each cycle aligned to the\nreference_cycle (by looping over ROIs).\n2. Do the same for all label images.\n3. Copy all tables from the non-aligned image to the aligned image\n(currently only works well if the only tables are well & FOV ROI tables\n(registered and original). Not implemented for measurement tables and\nother ROI tables).\n4. Clean up: Delete the old, non-aligned image and rename the new,\naligned image to take over its place.\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.0:fractal-tasks::convert_yokogawa_to_ome-zarr 2 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.0 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: [\\"/some/path/\\"] This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)"}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as input_path. (standard argument for Fractal tasks, managed by Fractal server)"}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: \\"some_plate.zarr/B/03/0\\" (standard argument for Fractal tasks, managed by Fractal server)"}, "metadata": {"title": "Metadata", "type": "object", "description": "dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: \\"original_paths\\": list of paths that correspond to the ``input_paths`` of the create_ome_zarr task (=> where the microscopy image are stored) \\"num_levels\\": int, number of pyramid levels in the image. This determines how many pyramid levels are built for the segmentation. \\"coarsening_xy\\": int, coarsening factor in XY of the downsampling when building the pyramid. \\"image_extension\\": Filename extension of images (e.g. ``\\"tif\\"`` or ``\\"png\\"``) \\"image_glob_patterns\\": Parameter of ``create_ome_zarr`` task. If specified, only parse images with filenames that match with all these patterns. (standard argument for Fractal tasks, managed by Fractal server)"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr 23 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0a2 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::apply_registration_to_roi_tables 42 Apply Registration to ROI Tables /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task does not use the metadata."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Applies pre-calculated registration to ROI tables.\n\nApply pre-calculated registration such that resulting ROIs contain\nthe consensus align region between all cycles.\n\nParallelization level: well https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:create_ome-zarr_structure 14 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.10.1 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:convert_yokogawa_to_ome-zarr 15 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.1 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::create_ome-zarr_structure 33 Create OME-Zarr structure /tmp/__REDACTED_COMMAND__ image zarr \N 0.11.0 {"title": "CreateOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data from the microscope is stored (as TIF or PNG). Should point to the parent folder containing the images and the metadata files `MeasurementData.mlf` and `MeasurementDetail.mrf` (if present). Example: `[\\"/some/path/\\"]`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: \\"/some/path/\\" => puts the new OME-Zarr file in the \\"/some/path/\\". (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task (standard argument for Fractal tasks, managed by Fractal server)."}, "allowed_channels": {"title": "Allowed Channels", "type": "array", "items": {"$ref": "#/definitions/OmeroChannel"}, "description": "A list of `OmeroChannel` s, where each channel must include the `wavelength_id` attribute and where the `wavelength_id` values must be unique across the list."}, "image_glob_patterns": {"title": "Image Glob Patterns", "type": "array", "items": {"type": "string"}, "description": "If specified, only parse images with filenames that match with all these patterns. Patterns must be defined as in https://docs.python.org/3/library/fnmatch.html, Example: `image_glob_pattern=[\\"*_B03_*\\"]` => only process well B03 `image_glob_pattern=[\\"*_C09_*\\", \\"*F016*\\", \\"*Z[0-5][0-9]C*\\"]` => only process well C09, field of view 16 and Z planes 0-59."}, "num_levels": {"title": "Num Levels", "default": 5, "type": "integer", "description": "Number of resolution-pyramid levels. If set to `5`, there will be the full-resolution level and 4 levels of downsampled images."}, "coarsening_xy": {"title": "Coarsening Xy", "default": 2, "type": "integer", "description": "Linear coarsening factor between subsequent levels. If set to `2`, level 1 is 2x downsampled, level 2 is 4x downsampled etc."}, "image_extension": {"title": "Image Extension", "default": "tif", "type": "string", "description": "Filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`)"}, "metadata_table_file": {"title": "Metadata Table File", "type": "string", "description": "If `None`, parse Yokogawa metadata from mrf/mlf files in the input_path folder; else, the full path to a csv file containing the parsed metadata table."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata", "allowed_channels"], "additionalProperties": false, "definitions": {"Window": {"title": "Window", "description": "Custom class for Omero-channel window, based on OME-NGFF v0.4.", "type": "object", "properties": {"min": {"title": "Min", "type": "integer", "description": "Do not change. It will be set to `0` by default."}, "max": {"title": "Max", "type": "integer", "description": "Do not change. It will be set according to bit-depth of the images by default (e.g. 65535 for 16 bit images)."}, "start": {"title": "Start", "type": "integer", "description": "Lower-bound rescaling value for visualization."}, "end": {"title": "End", "type": "integer", "description": "Upper-bound rescaling value for visualization."}}, "required": ["start", "end"]}, "OmeroChannel": {"title": "OmeroChannel", "description": "Custom class for Omero channels, based on OME-NGFF v0.4.", "type": "object", "properties": {"wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Unique ID for the channel wavelength, e.g. `A01_C01`."}, "index": {"title": "Index", "type": "integer", "description": "Do not change. For internal use only."}, "label": {"title": "Label", "type": "string", "description": "Name of the channel."}, "window": {"$ref": "#/definitions/Window", "title": "Window", "description": "Optional `Window` object to set default display settings for napari."}, "color": {"title": "Color", "type": "string", "description": "Optional hex colormap to display the channel in napari (it must be of length 6, e.g. `00FFFF`)."}, "active": {"title": "Active", "default": true, "type": "boolean", "description": "Should this channel be shown in the viewer?"}, "coefficient": {"title": "Coefficient", "default": 1, "type": "integer", "description": "Do not change. Omero-channel attribute."}, "inverted": {"title": "Inverted", "default": false, "type": "boolean", "description": "Do not change. Omero-channel attribute."}}, "required": ["wavelength_id"]}}} pydantic_v1 Create a OME-NGFF zarr folder, without reading/writing image data.\n\nFind plates (for each folder in input_paths):\n\n- glob image files,\n- parse metadata from image filename to identify plates,\n- identify populated channels.\n\nCreate a zarr folder (for each plate):\n\n- parse mlf metadata,\n- identify wells and field of view (FOV),\n- create FOV ZARR,\n- verify that channels are uniform (i.e., same channels). https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/create_ome_zarr/#fractal_tasks_core.tasks.create_ome_zarr.create_ome_zarr f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::apply_registration_to_image 96 Apply Registration to Image /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false} pydantic_v1 Apply registration to images by using a registered ROI table\n\nThis task consists of 4 parts:\n\n1. Mask all regions in images that are not available in the\nregistered ROI table and store each cycle aligned to the\nreference_cycle (by looping over ROIs).\n2. Do the same for all label images.\n3. Copy all tables from the non-aligned image to the aligned image\n(currently only works well if the only tables are well & FOV ROI tables\n(registered and original). Not implemented for measurement tables and\nother ROI tables).\n4. Clean up: Delete the old, non-aligned image and rename the new,\naligned image to take over its place.\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::illumination_correction 91 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 Applies illumination correction to the images in the OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/illumination_correction/#fractal_tasks_core.tasks.illumination_correction.illumination_correction f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::apply_registration_to_image 70 Apply Registration to Image /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false} pydantic_v1 Apply registration to images by using a registered ROI table\n\nThis task consists of 4 parts:\n\n1. Mask all regions in images that are not available in the\nregistered ROI table and store each cycle aligned to the\nreference_cycle (by looping over ROIs).\n2. Do the same for all label images.\n3. Copy all tables from the non-aligned image to the aligned image\n(currently only works well if the only tables are well & FOV ROI tables\n(registered and original). Not implemented for measurement tables and\nother ROI tables).\n4. Clean up: Delete the old, non-aligned image and rename the new,\naligned image to take over its place.\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::convert_yokogawa_to_ome-zarr 47 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Convert Yokogawa output (png, tif) to zarr file.\n\nThis task is typically run after Create OME-Zarr or\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\nwere prepared. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::convert_yokogawa_to_ome-zarr 87 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Convert Yokogawa output (png, tif) to zarr file.\n\nThis task is typically run after Create OME-Zarr or\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\nwere prepared. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::apply_registration_to_image 83 Apply Registration to Image /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "ApplyRegistrationToImage", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "registered_roi_table": {"title": "Registered Roi Table", "type": "string", "description": "Name of the ROI table which has been registered and will be applied to mask and shift the images. Examples: `registered_FOV_ROI_table` => loop over the field of views, `registered_well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": "0", "type": "string", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "Whether the old image data should be replaced with the newly registered image data. Currently only implemented for `overwrite_input=True`."}}, "required": ["input_paths", "output_path", "component", "metadata", "registered_roi_table"], "additionalProperties": false} pydantic_v1 Apply registration to images by using a registered ROI table\n\nThis task consists of 4 parts:\n\n1. Mask all regions in images that are not available in the\nregistered ROI table and store each cycle aligned to the\nreference_cycle (by looping over ROIs).\n2. Do the same for all label images.\n3. Copy all tables from the non-aligned image to the aligned image\n(currently only works well if the only tables are well & FOV ROI tables\n(registered and original). Not implemented for measurement tables and\nother ROI tables).\n4. Clean up: Delete the old, non-aligned image and rename the new,\naligned image to take over its place.\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_image/#fractal_tasks_core.tasks.apply_registration_to_image.apply_registration_to_image f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::illumination_correction 51 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 Applies illumination correction to the images in the OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/illumination_correction/#fractal_tasks_core.tasks.illumination_correction.illumination_correction f +{"cpus_per_task": 1, "mem": 4000} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::import_ome-zarr 84 Import OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "ImportOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "A length-one list with the parent folder of the OME-Zarr to be imported; e.g. `input_paths=[\\"/somewhere\\"]`, if the OME-Zarr path is `/somewhere/array.zarr`. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Not used in this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Not used in this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "zarr_name": {"title": "Zarr Name", "type": "string", "description": "The OME-Zarr name, without its parent folder; e.g. `zarr_name=\\"array.zarr\\"`, if the OME-Zarr path is `/somewhere/array.zarr`."}, "add_image_ROI_table": {"title": "Add Image Roi Table", "default": true, "type": "boolean", "description": "Whether to add a `image_ROI_table` table to each image, with a single ROI covering the whole image."}, "add_grid_ROI_table": {"title": "Add Grid Roi Table", "default": true, "type": "boolean", "description": "Whether to add a `grid_ROI_table` table to each image, with the image split into a rectangular grid of ROIs."}, "grid_y_shape": {"title": "Grid Y Shape", "default": 2, "type": "integer", "description": "Y shape of the ROI grid in `grid_ROI_table`."}, "grid_x_shape": {"title": "Grid X Shape", "default": 2, "type": "integer", "description": "X shape of the ROI grid in `grid_ROI_table`."}, "update_omero_metadata": {"title": "Update Omero Metadata", "default": true, "type": "boolean", "description": "Whether to update Omero-channels metadata, to make them Fractal-compatible."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "Whether new ROI tables (added when `add_image_ROI_table` and/or `add_grid_ROI_table` are `True`) can overwite existing ones."}}, "required": ["input_paths", "output_path", "metadata", "zarr_name"], "additionalProperties": false} pydantic_v1 Import an OME-Zarr into Fractal.\n\nThe current version of this task:\n\n1. Creates the appropriate components-related metadata, needed for\n processing an existing OME-Zarr through Fractal.\n2. Optionally adds new ROI tables to the existing OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/import_ome_zarr/#fractal_tasks_core.tasks.import_ome_zarr.import_ome_zarr f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::maximum_intensity_projection 49 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Perform maximum-intensity projection along Z axis.\n\nNote: this task stores the output in a new zarr file. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::maximum_intensity_projection 89 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Perform maximum-intensity projection along Z axis.\n\nNote: this task stores the output in a new zarr file. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection f +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.0:fractal-tasks::calculate_registration_(image-based) 54 Calculate registration (image-based) /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.0 {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false} pydantic_v1 Calculate registration based on images\n\nThis task consists of 3 parts:\n\n1. Loading the images of a given ROI (=> loop over ROIs)\n2. Calculating the transformation for that ROI\n3. Storing the calculated transformation in the ROI table\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:copy_ome-zarr_structure 24 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0a2 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0:fractal-tasks::convert_yokogawa_to_ome-zarr 34 Convert Yokogawa to OME-Zarr /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0 {"title": "YokogawaToOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Unclear. Should be the same as `input_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"` (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `original_paths`: list of paths that correspond to the `input_paths` of the `create_ome_zarr` task (=> where the microscopy image are stored); `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid; `image_extension`: filename extension of images (e.g. `\\"tif\\"` or `\\"png\\"`); `image_glob_patterns`: parameter of `create_ome_zarr` task (if specified, only parse images with filenames that match with all these patterns). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Convert Yokogawa output (png, tif) to zarr file.\n\nThis task is typically run after Create OME-Zarr or\nCreate OME-Zarr Multiplexing and populates the empty OME-Zarr files that\nwere prepared. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/yokogawa_to_ome_zarr/#fractal_tasks_core.tasks.yokogawa_to_ome_zarr.yokogawa_to_ome_zarr f +{"cpus_per_task": 1, "mem": 1000} pip_local:fractal_faim_hcs:0.1.dev27+g1458b59:::create_ome-zarr_md 9 Create OME-Zarr MD /tmp/__REDACTED_COMMAND__ image zarr \N 0.1.0 {"additionalProperties": false, "properties": {"barcode": {"default": "example-barcode", "description": "Barcode of the plate", "title": "Barcode", "type": "string"}, "input_paths": {"description": "List of paths to the input files (Fractal managed)", "items": {"type": "string"}, "title": "Input Paths", "type": "array"}, "metadata": {"description": "Metadata dictionary (Fractal managed)", "title": "Metadata", "type": "object"}, "mode": {"default": "all", "description": "Mode can be 3 values: \\"z-steps\\" (only parse the 3D data), \\"top-level\\" (only parse the 2D data), \\"all\\" (parse both)", "title": "Mode", "type": "string"}, "num_levels": {"default": 5, "description": "Number of levels to generate in the zarr file", "title": "Num Levels"}, "order_name": {"default": "example-order", "description": "Name of the order", "title": "Order Name", "type": "string"}, "output_path": {"description": "Path to the output file (Fractal managed)", "title": "Output Path", "type": "string"}, "overwrite": {"default": true, "description": "Whether to overwrite the zarr file if it already exists", "title": "Overwrite", "type": "boolean"}, "zarr_name": {"default": "Plate", "description": "Name of the zarr plate file that will be created", "title": "Zarr Name", "type": "string"}}, "required": ["input_paths", "output_path", "metadata"], "title": "CreateOmeZarrMd", "type": "object"} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:copy_ome-zarr_structure 16 Copy OME-Zarr structure /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.1 {"title": "CopyOmeZarr", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata: `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/MyPlate.zarr/B/05\\"]`); \\"image\\": List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). standard argument for Fractal tasks, managed by Fractal server)."}, "project_to_2D": {"title": "Project To 2D", "default": true, "type": "boolean", "description": "If `True`, apply a 3D->2D projection to the ROI tables that are copied to the new OME-Zarr."}, "suffix": {"title": "Suffix", "default": "mip", "type": "string", "description": "The suffix that is used to transform `plate.zarr` into `plate_suffix.zarr`. Note that `None` is not currently supported."}, "ROI_table_names": {"title": "Roi Table Names", "default": ["FOV_ROI_table", "well_ROI_table"], "type": "array", "items": {"type": "string"}, "description": "List of Anndata table names to be copied. Note: copying non-ROI tables may fail if `project_to_2D=True`."}}, "required": ["input_paths", "output_path", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:illumination_correction 27 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0a2 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation), `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.1:fractal-tasks::calculate_registration_(image-based) 94 Calculate registration (image-based) /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.1 {"title": "CalculateRegistrationImageBased", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "wavelength_id": {"title": "Wavelength Id", "type": "string", "description": "Wavelength that will be used for image-based registration; e.g. `A01_C01` for Yokogawa, `C01` for MD."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well (usually the first cycle that was provided)."}, "level": {"title": "Level", "default": 2, "type": "integer", "description": "Pyramid level of the image to be segmented. Choose `0` to process at full resolution."}}, "required": ["input_paths", "output_path", "component", "metadata", "wavelength_id"], "additionalProperties": false} pydantic_v1 Calculate registration based on images\n\nThis task consists of 3 parts:\n\n1. Loading the images of a given ROI (=> loop over ROIs)\n2. Calculating the transformation for that ROI\n3. Storing the calculated transformation in the ROI table\n\nParallelization level: image https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/calculate_registration_image_based/#fractal_tasks_core.tasks.calculate_registration_image_based.calculate_registration_image_based f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.11.0a2:fractal-tasks:py3.9:maximum_intensity_projection 25 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.11.0a2 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::illumination_correction 65 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 Applies illumination correction to the images in the OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/illumination_correction/#fractal_tasks_core.tasks.illumination_correction.illumination_correction f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.13.0:fractal-tasks::illumination_correction 78 Illumination correction /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.13.0 {"title": "IlluminationCorrection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Examples: `\\"/some/path/\\"` => puts the new OME-Zarr file in the same folder as the input OME-Zarr file; `\\"/some/new_path\\"` => puts the new OME-Zarr file into a new folder at `/some/new_path`. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "illumination_profiles_folder": {"title": "Illumination Profiles Folder", "type": "string", "description": "Path of folder of illumination profiles."}, "dict_corr": {"title": "Dict Corr", "type": "object", "additionalProperties": {"type": "string"}, "description": "Dictionary where keys match the `wavelength_id` attributes of existing channels (e.g. `A01_C01` ) and values are the filenames of the corresponding illumination profiles."}, "background": {"title": "Background", "default": 110, "type": "integer", "description": "Background value that is subtracted from the image before the illumination correction is applied. Set it to `0` if you don't want any background subtraction."}, "overwrite_input": {"title": "Overwrite Input", "default": true, "type": "boolean", "description": "If `True`, the results of this task will overwrite the input image data. In the current version, `overwrite_input=False` is not implemented."}, "new_component": {"title": "New Component", "type": "string", "description": "Not implemented yet. This is not implemented well in Fractal server at the moment, it's unclear how a user would specify fitting new components. If the results shall not overwrite the input data and the output path is the same as the input path, a new component needs to be provided. Example: `myplate_new_name.zarr/B/03/0/`."}}, "required": ["input_paths", "output_path", "component", "metadata", "illumination_profiles_folder", "dict_corr"], "additionalProperties": false} pydantic_v1 Applies illumination correction to the images in the OME-Zarr. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/illumination_correction/#fractal_tasks_core.tasks.illumination_correction.illumination_correction f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::maximum_intensity_projection 63 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the key `copy_ome_zarr` to be present in the metadata (as defined in `copy_ome_zarr` task). (standard argument for Fractal tasks, managed by Fractal server)."}, "overwrite": {"title": "Overwrite", "default": false, "type": "boolean", "description": "If `True`, overwrite the task output."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Perform maximum-intensity projection along Z axis.\n\nNote: this task stores the output in a new zarr file. https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/maximum_intensity_projection/#fractal_tasks_core.tasks.maximum_intensity_projection.maximum_intensity_projection f +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} pip_remote:fractal_tasks_core:0.10.1:fractal-tasks:py3.9:maximum_intensity_projection 17 Maximum Intensity Projection /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.10.1 {"title": "MaximumIntensityProjection", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "This parameter is not used by this task. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "Path were the output of this task is stored. Example: `\\"/some/path/\\"` => puts the new OME-Zarr file in that folder. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Component is typically changed by the `copy_ome_zarr` task before, to point to a new mip Zarr file. Example: `\\"some_plate_mip.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "Dictionary containing metadata about the OME-Zarr. This task requires the following elements to be present in the metadata. `num_levels (int)`: number of pyramid levels in the image (this determines how many pyramid levels are built for the segmentation); `coarsening_xy (int)`: coarsening factor in XY of the downsampling when building the pyramid `plate`: List of plates (e.g. `[\\"MyPlate.zarr\\"]`); `well`: List of wells in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03\\", \\"MyPlate.zarr/B/05\\"]`); `image: List of images in the OME-Zarr plate (e.g. `[\\"MyPlate.zarr/B/03/0\\", \\"MyPlate.zarr/B/05/0\\"]`). (standard argument for Fractal tasks, managed by Fractal server)."}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 \N \N f +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} pip_remote:fractal_tasks_core:0.12.2:fractal-tasks::apply_registration_to_roi_tables 69 Apply Registration to ROI Tables /tmp/__REDACTED_COMMAND__ zarr zarr \N 0.12.2 {"title": "ApplyRegistrationToRoiTables", "type": "object", "properties": {"input_paths": {"title": "Input Paths", "type": "array", "items": {"type": "string"}, "description": "List of input paths where the image data is stored as OME-Zarrs. Should point to the parent folder containing one or many OME-Zarr files, not the actual OME-Zarr file. Example: `[\\"/some/path/\\"]`. This task only supports a single input path. (standard argument for Fractal tasks, managed by Fractal server)."}, "output_path": {"title": "Output Path", "type": "string", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "component": {"title": "Component", "type": "string", "description": "Path to the OME-Zarr image in the OME-Zarr plate that is processed. Example: `\\"some_plate.zarr/B/03/0\\"`. (standard argument for Fractal tasks, managed by Fractal server)."}, "metadata": {"title": "Metadata", "type": "object", "description": "This parameter is not used by this task. (standard argument for Fractal tasks, managed by Fractal server)."}, "roi_table": {"title": "Roi Table", "default": "FOV_ROI_table", "type": "string", "description": "Name of the ROI table over which the task loops to calculate the registration. Examples: `FOV_ROI_table` => loop over the field of views, `well_ROI_table` => process the whole well as one image."}, "reference_cycle": {"title": "Reference Cycle", "default": 0, "type": "integer", "description": "Which cycle to register against. Defaults to 0, which is the first OME-Zarr image in the well, usually the first cycle that was provided"}, "new_roi_table": {"title": "New Roi Table", "type": "string", "description": "Optional name for the new, registered ROI table. If no name is given, it will default to \\"registered_\\" + `roi_table`"}}, "required": ["input_paths", "output_path", "component", "metadata"], "additionalProperties": false} pydantic_v1 Applies pre-calculated registration to ROI tables.\n\nApply pre-calculated registration such that resulting ROIs contain\nthe consensus align region between all cycles.\n\nParallelization level: well https://fractal-analytics-platform.github.io/fractal-tasks-core/reference/fractal_tasks_core/tasks/apply_registration_to_ROI_tables/#fractal_tasks_core.tasks.apply_registration_to_ROI_tables.apply_registration_to_ROI_tables f +\. + + +-- +-- Data for Name: taskv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.taskv2 (id, name, type, command_non_parallel, command_parallel, source, meta_non_parallel, meta_parallel, owner, version, args_schema_non_parallel, args_schema_parallel, args_schema_version, docs_info, docs_link, input_types, output_types) FROM stdin; +1 Echo Task compound echo echo admin:echo-task {} {} admin \N null null \N \N \N {} {} +2 Ls Task non_parallel ls \N admin:ls-task {} {} admin \N null null \N \N \N {} {} +\. + + +-- +-- Data for Name: user_oauth; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.user_oauth (id, email, hashed_password, is_active, is_superuser, is_verified, slurm_user, cache_dir, username, slurm_accounts) FROM stdin; +1 admin@example.org $2b$12$qVuxg/SmyTLvtVDUcWoD..3Q9QvScTrUDbSW8IaYX1vZqbwGY0dUq t t f \N /tmp/__REDACTED_CACHE_DIR__ admin [] +6 user@example.org $2b$12$qVuxg/SmyTLvtVDUcWoD..3Q9QvScTrUDbSW8IaYX1vZqbwGY0dUq t f f __REDACTED_SLURM_USER_ /tmp/__REDACTED_CACHE_DIR__ __REDACTED_OWNER__ [] +27 admin@fractal.xy $2b$12$ya6S7rcG/S.aaJFoy6DzhOmlREv0lcJ/D1SV8lM1harCCBDlKBSXS t t t slurm \N admin [] +28 vanilla@example.org $2b$12$tS4FU1JBa5XuFtqbGKZD/ubUAaTvbtsaqPJkBhLnMm0TgQwiQR8rm t f t vanilla-slurm \N \N [] +\. + + +-- +-- Data for Name: workflow; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.workflow (name, id, project_id, timestamp_created) FROM stdin; +test 7 7 2000-01-01 01:00:00+01 +Segmentation Workflow 8 8 2000-01-01 01:00:00+01 +Workflow cardiac-test-5 10 10 2000-01-01 01:00:00+01 +Workflow cardiac-test-partial 17 17 2000-01-01 01:00:00+01 +Test 41 36 2000-01-01 01:00:00+01 +Workflow cardiac-test-4 1 1 2023-06-27 17:54:31.667519+02 +Workflow cardiac-test-5 2 2 2023-06-27 17:55:23.122511+02 +Workflow 20230627_MD_Parsing_2D_Test6 3 3 2023-06-27 18:38:30.361417+02 +Workflow 2D_to_3D_workflow_5 4 4 2023-06-27 18:38:56.714489+02 +Workflow 20230627_MD_Parsing_2D_Test1 5 5 2023-06-27 18:47:03.587612+02 +Workflow cardiac-tiny-scmultiplex1 6 6 2023-06-30 11:03:49.643708+02 +Workflow multiplex-3 15 15 2023-08-07 18:08:41.098333+02 +Workflow multiplex-1 16 16 2023-08-07 18:12:46.178079+02 +Workflow cardiac-test-partial-1 18 18 2023-08-09 09:58:14.976868+02 +Prepare_Zarrs 23 20 2023-09-06 15:42:52.727684+02 +Workflow cardiac-tiny 28 23 2023-09-14 09:26:42.119903+02 +Workflow cardiac-tiny-1 29 24 2023-09-14 09:28:20.232417+02 +Workflow cardiac-test-partial-2 30 25 2023-09-14 09:30:47.026409+02 +Workflow cardiac-tiny-2 31 26 2023-09-14 09:39:41.581472+02 +Workflow cardio-2x2-1 32 27 2023-09-14 09:44:13.313113+02 +Workflow cardio-2x2-zenodo-subset-1 33 28 2023-09-14 09:44:44.589979+02 +Workflow multiplex-2 34 29 2023-09-14 09:46:24.672629+02 +Workflow reversed_1 35 30 2023-09-14 09:46:46.420447+02 +Workflow no_illum_corr-2 36 31 2023-09-14 09:47:28.329188+02 +Workflow with_illum_corr_2 37 32 2023-09-14 09:48:03.156404+02 +Workflow no_illum_corr_fullWell-1 38 33 2023-09-14 09:48:21.646482+02 +Workflow with_illum_corr_fullWell-1 39 34 2023-09-14 09:48:38.746527+02 +Workflow 2D_to_3D_workflow_1 40 35 2023-09-14 09:49:15.33797+02 +Workflow demo 46 41 2023-09-20 14:58:04.665133+02 +Workflow cardiac-tiny-2 55 49 2023-09-29 17:29:54.377672+02 +Workflow 2D_to_3D_workflow_1 56 50 2023-09-29 18:52:57.24979+02 +2D_to_3D 63 1 2023-06-27 17:54:31.667519+02 +Workflow cardiac-tiny-1312 64 53 2023-10-20 12:00:30.51846+02 +4i per well workflow 66 56 2023-10-25 14:45:26.35285+02 +\. + + +-- +-- Data for Name: workflowtask; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.workflowtask (meta, args, id, workflow_id, task_id, "order") FROM stdin; +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0} 441 64 82 7 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 2 1 2 1 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 4 1 4 3 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 7 2 1 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 8 2 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 9 2 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 10 2 4 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 14 3 10 1 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 17 4 1 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 18 4 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 19 4 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 20 4 4 3 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"} 21 4 5 4 +{"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000} {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]} 23 4 11 6 +{"cpus_per_task": 1, "mem": 1000} {"from_2d_to_3d": true, "suffix": "mip"} 24 4 12 7 +{"cpus_per_task": 1, "mem": 1000} {"barcode": "example-barcode", "mode": "top-level", "num_levels": 5, "order_name": "example-order", "overwrite": true, "zarr_name": "Plate"} 26 5 9 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 27 5 10 1 +{"cpus_per_task": 1, "mem": 1000} {"barcode": "example-barcode2", "mode": "top-level", "num_levels": 5, "order_name": "example-order", "overwrite": true, "zarr_name": "Plate"} 13 3 9 0 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 11 2 5 4 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 600, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"label": "Maximum-Projection_DAPI"}, "output_label_name": "organoids"} 15 3 5 2 +{"cpus_per_task": 2, "mem": 2000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 3 1 3 2 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"} 25 4 5 8 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 6 1 7 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 12 2 7 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 16 3 7 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 22 4 7 5 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 182 33 28 4 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true} 442 56 90 11 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 600, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"label": "Maximum-Projection_DAPI"}, "output_label_name": "organoids"} 28 5 5 2 +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} {"roi_table": "FOV_ROI_table", "reference_cycle": 2} 443 1 82 6 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 31 6 1 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 32 6 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 33 6 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 34 6 4 3 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 35 6 5 4 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "input_channels": {"C01": {"wavelength_id": "A01_C01"}}, "label_image": "nuclei", "output_table_name": "nuclei"} 36 6 13 5 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements"} 38 2 13 6 +{"cpus_per_task": 1, "mem": 1000} {"barcode": "example-barcode", "mode": "all", "num_levels": 5, "order_name": "example-order", "overwrite": true, "zarr_name": "Plate"} 40 7 9 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 41 7 10 1 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true} 42 7 5 2 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false} 43 7 13 3 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "tif"} 44 8 1 0 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 45 8 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 46 8 2 1 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 47 8 4 3 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true} 49 8 5 5 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false} 51 8 13 7 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 48 8 6 4 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 29 5 7 3 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 50 8 7 6 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 92 17 4 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 98 18 4 3 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 5 1 5 4 +{"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000} {} 84 16 8 0 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true} 71 2 5 7 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 81 15 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 82 15 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 83 15 4 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 85 16 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 86 16 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 87 16 4 3 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 89 17 1 0 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 100, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_ROI_table": "nuclei_ROI_table", "output_label_name": "nuclei"} 88 16 5 4 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 90 17 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 91 17 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 418 10 92 5 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 93 17 5 4 +{"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000} {} 80 15 8 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 96 18 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 97 18 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 94 17 7 5 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 95 18 1 0 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 99 18 5 4 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 100 18 7 5 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]} 1 1 1 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 118 23 2 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"]} 119 23 3 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} null 120 23 4 3 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 160 31 22 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 161 31 23 1 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 163 31 25 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 149 29 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 144 28 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 145 28 25 3 +{"cpus_per_task": 1, "mem": 4000} {} 117 23 8 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 153 29 28 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 159 30 28 5 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 150 29 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 151 29 25 3 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 154 30 22 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 155 30 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 156 30 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 157 30 25 3 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 158 30 26 4 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 146 28 26 4 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 148 29 22 0 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 162 31 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 172 32 25 6 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 179 33 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 183 33 24 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 184 33 25 6 +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"} 194 34 41 4 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"reference_cycle": "0", "overwrite_input": true, "registered_roi_table": "registered_FOV_ROI_table"} 196 34 43 6 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 198 35 23 1 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 168 32 27 2 +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2} 465 8 94 8 +{"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000} {} 190 34 29 0 +{"cpus_per_task": 1, "mem": 4000, "mem_per_task_MB": 4000} {} 197 35 29 0 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 175 32 28 9 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 176 32 28 10 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 177 32 28 11 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 167 32 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 171 32 24 5 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true} 466 8 59 9 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.6, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"label": "DAPI"}} 444 1 90 7 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 164 31 26 4 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"wavelength_id": "A01_C01", "color": "00FFFF", "label": "DAPI", "window": {"start": 0, "end": 700}}, {"wavelength_id": "A01_C02", "color": "FF00FF", "label": "nanog", "window": {"start": 0, "end": 180}}, {"wavelength_id": "A02_C03", "color": "FFFF00", "label": "Lamin B1", "window": {"start": 0, "end": 1500}}]} 166 32 22 0 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 2, "output_label_name": "nuclei"} 169 32 26 3 +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2} 468 1 94 8 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 180 33 27 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 165 31 28 5 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 0, "output_label_name": "nuclei"} 173 32 26 7 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": false, "allowed_channels": [{"wavelength_id": "A01_C01", "color": "00FFFF", "label": "DAPI", "window": {"start": 0, "end": 700}}, {"wavelength_id": "A01_C02", "color": "FF00FF", "label": "nanog", "window": {"start": 0, "end": 180}}, {"wavelength_id": "A02_C03", "color": "FFFF00", "label": "Lamin B1", "window": {"start": 0, "end": 1500}}], "image_glob_patterns": ["*F001*Z0[4,5]*"]} 178 33 22 0 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 170 32 28 4 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 2, "output_label_name": "nuclei"} 181 33 26 3 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 174 32 28 8 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "channel": {"wavelength_id": "A01_C01"}, "level": 0, "output_label_name": "nuclei"} 185 33 26 7 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 191 34 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 192 34 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 193 34 25 3 +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0} 195 34 42 5 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 199 35 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 200 35 25 3 +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"} 201 35 41 4 +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0} 202 35 42 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"reference_cycle": "0", "overwrite_input": true, "registered_roi_table": "registered_FOV_ROI_table"} 203 35 43 6 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 204 36 22 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 205 36 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 206 36 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 207 36 25 3 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 208 36 26 4 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 186 33 28 8 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 187 33 28 9 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 188 33 28 10 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 189 33 28 11 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 209 36 28 5 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 210 36 28 6 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 0, "end": 690}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 0, "end": 180}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 0, "end": 1490}}]} 212 37 22 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 213 37 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 215 37 24 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 216 37 25 4 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 217 37 26 5 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 221 38 22 0 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 223 38 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 224 38 25 3 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 0, "end": 690}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 0, "end": 180}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 0, "end": 1490}}]} 229 39 22 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 230 39 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 232 39 24 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 241 40 25 3 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"} 242 40 26 4 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 214 37 27 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 231 39 27 2 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 211 36 28 7 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 218 37 28 6 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 219 37 28 7 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 220 37 28 8 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 236 39 28 7 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 239 40 23 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 240 40 24 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 222 38 23 1 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 225 38 26 4 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 233 39 25 4 +{"cpus_per_task": 16, "mem": 60000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 0, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 234 39 26 5 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true} 390 34 64 7 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 238 40 22 0 +{"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000} {"level": 0, "suffix": "mip", "label_name": "nuclei", "ROI_tables_to_copy": ["nuclei_ROI_table"], "new_label_name": "nuclei_2D", "new_table_names": ["nuclei_2D_ROI_table"]} 244 40 11 6 +{"cpus_per_task": 1, "mem": 1000} {"from_2d_to_3d": true, "suffix": "mip"} 245 40 12 7 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 226 38 28 5 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 227 38 28 6 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 228 38 28 7 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"} 246 40 26 8 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 152 29 26 4 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 235 39 28 6 +{"cpus_per_task": 8, "mem": 32000, "parallelization_level": "image"} {} 237 39 28 8 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 243 40 28 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 274 46 34 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 275 46 35 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 276 46 36 3 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "organoid_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "organoids", "output_table_name": "scmultiplex_2d_nuclei_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}} 352 56 59 6 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]} 273 46 33 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 278 46 39 5 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 277 46 37 4 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "label_image": "nuclei", "output_table_name": "nuclei_measurements_scmultiplex", "input_channels": {"C01": {"label": "DAPI"}}} 312 46 13 6 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 150, "model_type": "cyto2", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"label": "DAPI1"}, "output_label_name": "nuclei"} 411 66 77 5 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "nuclei_measurement", "input_channels": {"C01": {"label": "DAPI1"}, "C03": {"wavelength_id": "A03_C03"}, "C04": {"wavelength_id": "A01_C04"}, "C02": {"wavelength_id": "A02_C02"}}} 412 66 59 6 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 414 10 87 1 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 416 10 89 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 341 55 39 5 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}, "active": true, "coefficient": 1, "inverted": false}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}, "active": true, "coefficient": 1, "inverted": false}]} 336 55 33 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 337 55 34 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 338 55 35 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 339 55 36 3 +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} {"roi_table": "FOV_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"} 397 64 81 6 +{"cpus_per_task": 4, "mem": 32000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 340 55 37 4 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "nuclei_scmultiplex_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}} 342 55 59 6 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 343 56 46 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 344 56 47 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 345 56 48 2 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 346 56 49 3 +{"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000} {"level": 0, "suffix": "mip", "label_name": "organoids", "ROI_tables_to_copy": ["organoid_ROI_table"], "new_label_name": "organoids_2D", "new_table_names": ["nuclei_2D_ROI_table"]} 349 56 11 7 +{"cpus_per_task": 1, "mem": 1000} {"from_2d_to_3d": true, "suffix": "mip"} 350 56 12 8 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "organoids", "output_ROI_table": "organoid_ROI_table"} 347 56 50 4 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "scmultiplex_3d_nuclei_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}} 353 56 59 10 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "organoid_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"} 351 56 50 9 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 348 56 52 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 147 28 28 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 381 63 61 1 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 383 63 63 3 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "organoids", "output_table_name": "organoids_measurements", "input_channels": {"C01": {"wavelength_id": "A01_C01"}}} 385 63 59 5 +{"cpus_per_task": 1, "mem": 1000} {"from_2d_to_3d": true, "suffix": "mip"} 387 63 72 7 +{"cpus_per_task": 1, "mem": 60000, "parallelization_level": "image"} {"overwrite": false} 407 66 74 1 +{"cpus_per_task": 1, "mem": 8000, "parallelization_level": "image"} {"roi_table": "well_ROI_table", "reference_cycle": 0, "level": 2, "wavelength_id": "A01_C01"} 408 66 81 2 +{"cpus_per_task": 1, "mem": 1000, "parallelization_level": "well"} {"roi_table": "well_ROI_table", "reference_cycle": 0} 409 66 82 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"reference_cycle": "0", "overwrite_input": true, "registered_roi_table": "registered_well_ROI_table"} 410 66 83 4 +{"cpus_per_task": 1, "mem": 4000} {} 406 66 80 0 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 380 63 60 0 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 382 63 62 2 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 300, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "organoids", "output_ROI_table": "organoid_ROI_table"} 384 63 64 4 +{"parallelization_level": "image", "cpus_per_task": 2, "mem": 16000} {"level": 0, "suffix": "mip", "overwrite": false, "label_name": "organoids", "ROI_tables_to_copy": ["organoid_ROI_table"]} 386 63 71 6 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "organoid_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei", "output_ROI_table": "nuclei_ROI_table"} 388 63 64 8 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 30.0, "model_type": "cyto2", "cellprob_threshold": 0.0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true} 389 46 64 7 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": false, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 413 10 86 0 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": false} 415 10 88 2 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 1, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 417 10 90 4 +{"cpus_per_task": 4, "mem": 16000, "parallelization_level": "image"} {"input_ROI_table": "FOV_ROI_table", "level": 0, "label_level": 0, "measure_morphology": true, "allow_duplicate_labels": false, "overwrite": true, "label_image": "nuclei", "output_table_name": "nuclei_measurements"} 419 10 59 6 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {} 440 64 92 5 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 427 28 87 1 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 426 28 86 0 +{"cpus_per_task": 4, "mem": 16000, "needs_gpu": true, "parallelization_level": "image"} {"input_ROI_table": "well_ROI_table", "use_masks": true, "relabeling": true, "diameter_level0": 60, "model_type": "nuclei", "cellprob_threshold": 0, "flow_threshold": 0.4, "min_size": 15, "augment": false, "net_avg": false, "use_gpu": true, "overwrite": true, "level": 2, "channel": {"wavelength_id": "A01_C01"}, "output_label_name": "nuclei"} 439 64 90 4 +{"cpus_per_task": 1, "mem": 4000} {"num_levels": 5, "coarsening_xy": 2, "image_extension": "png", "overwrite": true, "allowed_channels": [{"color": "00FFFF", "wavelength_id": "A01_C01", "label": "DAPI", "window": {"start": 110, "end": 800}}, {"color": "FF00FF", "wavelength_id": "A01_C02", "label": "nanog", "window": {"start": 110, "end": 290}}, {"color": "FFFF00", "wavelength_id": "A02_C03", "label": "Lamin B1", "window": {"start": 110, "end": 1600}}]} 435 64 86 0 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 438 64 89 3 +{"cpus_per_task": 1, "mem": 4000, "parallelization_level": "image"} {"overwrite": false} 436 64 87 1 +{"cpus_per_task": 1, "mem": 1000} {"project_to_2D": true, "suffix": "mip", "ROI_table_names": ["FOV_ROI_table", "well_ROI_table"], "overwrite": true} 437 64 88 2 +\. + + +-- +-- Data for Name: workflowtaskv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.workflowtaskv2 (id, workflow_id, "order", meta_parallel, meta_non_parallel, args_parallel, args_non_parallel, input_filters, is_legacy_task, task_type, task_id, task_legacy_id) FROM stdin; +1 1 0 null null null null {"attributes": {}, "types": {}} f compound 1 \N +\. + + +-- +-- Data for Name: workflowv2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.workflowv2 (id, name, project_id, timestamp_created) FROM stdin; +1 MyWorkflow 1 2024-04-24 12:54:44.034782+02 +\. + + +-- +-- Name: applyworkflow_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.applyworkflow_id_seq', 168, true); + + +-- +-- Name: collectionstatev2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.collectionstatev2_id_seq', 1, false); + + +-- +-- Name: dataset_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.dataset_id_seq', 138, true); + + +-- +-- Name: datasetv2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.datasetv2_id_seq', 1, true); + + +-- +-- Name: jobv2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.jobv2_id_seq', 1, true); + + +-- +-- Name: oauthaccount_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.oauthaccount_id_seq', 1, false); + + +-- +-- Name: project_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.project_id_seq', 59, true); + + +-- +-- Name: projectv2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.projectv2_id_seq', 1, true); + + +-- +-- Name: resource_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.resource_id_seq', 163, true); + + +-- +-- Name: state_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.state_id_seq', 15, true); + + +-- +-- Name: task_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.task_id_seq', 97, true); + + +-- +-- Name: taskv2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.taskv2_id_seq', 2, true); + + +-- +-- Name: user_oauth_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.user_oauth_id_seq', 28, true); + + +-- +-- Name: workflow_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.workflow_id_seq', 69, true); + + +-- +-- Name: workflowtask_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.workflowtask_id_seq', 473, true); + + +-- +-- Name: workflowtaskv2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.workflowtaskv2_id_seq', 1, true); + + +-- +-- Name: workflowv2_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.workflowv2_id_seq', 1, true); + + +-- +-- Name: alembic_version alembic_version_pkc; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.alembic_version + ADD CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num); + + +-- +-- Name: applyworkflow applyworkflow_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.applyworkflow + ADD CONSTRAINT applyworkflow_pkey PRIMARY KEY (id); + + +-- +-- Name: dataset dataset_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.dataset + ADD CONSTRAINT dataset_pkey PRIMARY KEY (id); + + +-- +-- Name: linkuserproject linkuserproject_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.linkuserproject + ADD CONSTRAINT linkuserproject_pkey PRIMARY KEY (project_id, user_id); + + +-- +-- Name: oauthaccount oauthaccount_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.oauthaccount + ADD CONSTRAINT oauthaccount_pkey PRIMARY KEY (id); + + +-- +-- Name: collectionstatev2 pk_collectionstatev2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.collectionstatev2 + ADD CONSTRAINT pk_collectionstatev2 PRIMARY KEY (id); + + +-- +-- Name: datasetv2 pk_datasetv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.datasetv2 + ADD CONSTRAINT pk_datasetv2 PRIMARY KEY (id); + + +-- +-- Name: jobv2 pk_jobv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.jobv2 + ADD CONSTRAINT pk_jobv2 PRIMARY KEY (id); + + +-- +-- Name: linkuserprojectv2 pk_linkuserprojectv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.linkuserprojectv2 + ADD CONSTRAINT pk_linkuserprojectv2 PRIMARY KEY (project_id, user_id); + + +-- +-- Name: projectv2 pk_projectv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.projectv2 + ADD CONSTRAINT pk_projectv2 PRIMARY KEY (id); + + +-- +-- Name: taskv2 pk_taskv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.taskv2 + ADD CONSTRAINT pk_taskv2 PRIMARY KEY (id); + + +-- +-- Name: workflowtaskv2 pk_workflowtaskv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtaskv2 + ADD CONSTRAINT pk_workflowtaskv2 PRIMARY KEY (id); + + +-- +-- Name: workflowv2 pk_workflowv2; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowv2 + ADD CONSTRAINT pk_workflowv2 PRIMARY KEY (id); + + +-- +-- Name: project project_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.project + ADD CONSTRAINT project_pkey PRIMARY KEY (id); + + +-- +-- Name: resource resource_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.resource + ADD CONSTRAINT resource_pkey PRIMARY KEY (id); + + +-- +-- Name: state state_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.state + ADD CONSTRAINT state_pkey PRIMARY KEY (id); + + +-- +-- Name: task task_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.task + ADD CONSTRAINT task_pkey PRIMARY KEY (id); + + +-- +-- Name: task task_source_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.task + ADD CONSTRAINT task_source_key UNIQUE (source); + + +-- +-- Name: taskv2 uq_taskv2_source; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.taskv2 + ADD CONSTRAINT uq_taskv2_source UNIQUE (source); + + +-- +-- Name: user_oauth user_oauth_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.user_oauth + ADD CONSTRAINT user_oauth_pkey PRIMARY KEY (id); + + +-- +-- Name: workflow workflow_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflow + ADD CONSTRAINT workflow_pkey PRIMARY KEY (id); + + +-- +-- Name: workflowtask workflowtask_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtask + ADD CONSTRAINT workflowtask_pkey PRIMARY KEY (id); + + +-- +-- Name: ix_oauthaccount_account_id; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX ix_oauthaccount_account_id ON public.oauthaccount USING btree (account_id); + + +-- +-- Name: ix_oauthaccount_oauth_name; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX ix_oauthaccount_oauth_name ON public.oauthaccount USING btree (oauth_name); + + +-- +-- Name: ix_user_oauth_email; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX ix_user_oauth_email ON public.user_oauth USING btree (email); + + +-- +-- Name: applyworkflow applyworkflow_input_dataset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.applyworkflow + ADD CONSTRAINT applyworkflow_input_dataset_id_fkey FOREIGN KEY (input_dataset_id) REFERENCES public.dataset(id); + + +-- +-- Name: applyworkflow applyworkflow_output_dataset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.applyworkflow + ADD CONSTRAINT applyworkflow_output_dataset_id_fkey FOREIGN KEY (output_dataset_id) REFERENCES public.dataset(id); + + +-- +-- Name: applyworkflow applyworkflow_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.applyworkflow + ADD CONSTRAINT applyworkflow_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.project(id); + + +-- +-- Name: applyworkflow applyworkflow_workflow_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.applyworkflow + ADD CONSTRAINT applyworkflow_workflow_id_fkey FOREIGN KEY (workflow_id) REFERENCES public.workflow(id); + + +-- +-- Name: dataset dataset_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.dataset + ADD CONSTRAINT dataset_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.project(id); + + +-- +-- Name: datasetv2 fk_datasetv2_project_id_projectv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.datasetv2 + ADD CONSTRAINT fk_datasetv2_project_id_projectv2 FOREIGN KEY (project_id) REFERENCES public.projectv2(id); + + +-- +-- Name: jobv2 fk_jobv2_dataset_id_datasetv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.jobv2 + ADD CONSTRAINT fk_jobv2_dataset_id_datasetv2 FOREIGN KEY (dataset_id) REFERENCES public.datasetv2(id); + + +-- +-- Name: jobv2 fk_jobv2_project_id_projectv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.jobv2 + ADD CONSTRAINT fk_jobv2_project_id_projectv2 FOREIGN KEY (project_id) REFERENCES public.projectv2(id); + + +-- +-- Name: jobv2 fk_jobv2_workflow_id_workflowv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.jobv2 + ADD CONSTRAINT fk_jobv2_workflow_id_workflowv2 FOREIGN KEY (workflow_id) REFERENCES public.workflowv2(id); + + +-- +-- Name: linkuserprojectv2 fk_linkuserprojectv2_project_id_projectv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.linkuserprojectv2 + ADD CONSTRAINT fk_linkuserprojectv2_project_id_projectv2 FOREIGN KEY (project_id) REFERENCES public.projectv2(id); + + +-- +-- Name: linkuserprojectv2 fk_linkuserprojectv2_user_id_user_oauth; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.linkuserprojectv2 + ADD CONSTRAINT fk_linkuserprojectv2_user_id_user_oauth FOREIGN KEY (user_id) REFERENCES public.user_oauth(id); + + +-- +-- Name: workflowtaskv2 fk_workflowtaskv2_task_id_taskv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtaskv2 + ADD CONSTRAINT fk_workflowtaskv2_task_id_taskv2 FOREIGN KEY (task_id) REFERENCES public.taskv2(id); + + +-- +-- Name: workflowtaskv2 fk_workflowtaskv2_task_legacy_id_task; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtaskv2 + ADD CONSTRAINT fk_workflowtaskv2_task_legacy_id_task FOREIGN KEY (task_legacy_id) REFERENCES public.task(id); + + +-- +-- Name: workflowtaskv2 fk_workflowtaskv2_workflow_id_workflowv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtaskv2 + ADD CONSTRAINT fk_workflowtaskv2_workflow_id_workflowv2 FOREIGN KEY (workflow_id) REFERENCES public.workflowv2(id); + + +-- +-- Name: workflowv2 fk_workflowv2_project_id_projectv2; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowv2 + ADD CONSTRAINT fk_workflowv2_project_id_projectv2 FOREIGN KEY (project_id) REFERENCES public.projectv2(id); + + +-- +-- Name: linkuserproject linkuserproject_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.linkuserproject + ADD CONSTRAINT linkuserproject_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.project(id); + + +-- +-- Name: linkuserproject linkuserproject_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.linkuserproject + ADD CONSTRAINT linkuserproject_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.user_oauth(id); + + +-- +-- Name: oauthaccount oauthaccount_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.oauthaccount + ADD CONSTRAINT oauthaccount_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.user_oauth(id); + + +-- +-- Name: resource resource_dataset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.resource + ADD CONSTRAINT resource_dataset_id_fkey FOREIGN KEY (dataset_id) REFERENCES public.dataset(id); + + +-- +-- Name: workflow workflow_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflow + ADD CONSTRAINT workflow_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.project(id); + + +-- +-- Name: workflowtask workflowtask_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtask + ADD CONSTRAINT workflowtask_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.task(id); + + +-- +-- Name: workflowtask workflowtask_workflow_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.workflowtask + ADD CONSTRAINT workflowtask_workflow_id_fkey FOREIGN KEY (workflow_id) REFERENCES public.workflow(id); + + +-- +-- PostgreSQL database dump complete +-- From 4c7f99216afd53ef6bf72833b3d564edaf9ddfcc Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:19:09 +0200 Subject: [PATCH 06/20] Remove obsolete refs from benchmarks GHA --- .github/workflows/benchmarks.yaml | 2 +- scripts/populate_db/fractal_client.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index c89b69f9a9..a55ff4c03f 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -65,7 +65,7 @@ jobs: - name: Benchmark run: | cd benchmarks/ - poetry run python api_bench.py ${{ github.head_ref || github.ref_name }} + poetry run python api_bench.py - name: Add comment with preview uses: mshick/add-pr-comment@v2 diff --git a/scripts/populate_db/fractal_client.py b/scripts/populate_db/fractal_client.py index 5d852c0007..2f14fb6a32 100644 --- a/scripts/populate_db/fractal_client.py +++ b/scripts/populate_db/fractal_client.py @@ -1,5 +1,6 @@ import logging import time +from json import JSONDecodeError import httpx from a2wsgi import ASGIMiddleware @@ -42,8 +43,14 @@ def __init__( "/auth/token/login/", data=credentials, ) - print(response.json()) - self.bearer_token = response.json().get("access_token") + try: + print(response.json()) + self.bearer_token = response.json().get("access_token") + except JSONDecodeError as e: + logging.error("Could not parse response JSON.") + logging.error(f"Request body: {credentials}") + logging.error(f"API response: {response}") + raise e def make_request(self, endpoint, method="GET", data=None): headers = {"Authorization": f"Bearer {self.bearer_token}"} From fdda63a9a0af748146e9b4d15bdad45d7e0d6c3c Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:20:47 +0200 Subject: [PATCH 07/20] Add `sleep 2` to `serve.sh` --- benchmarks/serve.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/benchmarks/serve.sh b/benchmarks/serve.sh index 7091de5bd1..0366161a9b 100644 --- a/benchmarks/serve.sh +++ b/benchmarks/serve.sh @@ -11,3 +11,5 @@ gunicorn "fractal_server.main:app" \ --daemon \ --access-logfile fractal-server.out \ --error-logfile fractal-server.err + +sleep 2 From 105962c6b27450c4b7af49f5fcf0fb04a75760c6 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:24:40 +0200 Subject: [PATCH 08/20] Make `api_bench.py` more robust --- benchmarks/api_bench.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/benchmarks/api_bench.py b/benchmarks/api_bench.py index 05a4e8920f..e9a107e47b 100644 --- a/benchmarks/api_bench.py +++ b/benchmarks/api_bench.py @@ -134,12 +134,16 @@ def get_metrics(self, user, path: str, res: Response) -> dict: time_response = res.elapsed.total_seconds() byte_size = len(res.content) else: + try: + detail = res.json().get("detail") + except json.JSONDecodeError: + detail = "Cannot parse response JSON" self.exceptions.append( dict( user=user, path=path, status=res.status_code, - detail=res.json().get("detail"), + detail=detail, exception=res.reason_phrase, ) ) From 5af28187430ec5d8d885f15d868c0c1f8f784037 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:25:40 +0200 Subject: [PATCH 09/20] Add `tmp` to gitignore in benchmarks --- benchmarks/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmarks/.gitignore b/benchmarks/.gitignore index 3391ee0645..ad09530c6e 100644 --- a/benchmarks/.gitignore +++ b/benchmarks/.gitignore @@ -1,3 +1,4 @@ fractal-server.err fractal-server.out bench_diff.md +tmp* From 288b68918c914d5fb08fb1cce037a9a0e88d0d0d Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:26:10 +0200 Subject: [PATCH 10/20] Revert adding `sleep 2` to `serve.sh` --- benchmarks/serve.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/benchmarks/serve.sh b/benchmarks/serve.sh index 0366161a9b..7091de5bd1 100644 --- a/benchmarks/serve.sh +++ b/benchmarks/serve.sh @@ -11,5 +11,3 @@ gunicorn "fractal_server.main:app" \ --daemon \ --access-logfile fractal-server.out \ --error-logfile fractal-server.err - -sleep 2 From 9101ec6719d80db448c1888028659d0b71306411 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:31:00 +0200 Subject: [PATCH 11/20] Update `job_factory_v2` --- tests/fixtures_server_v2.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/fixtures_server_v2.py b/tests/fixtures_server_v2.py index 0b1f6f57c6..114d1b8c08 100644 --- a/tests/fixtures_server_v2.py +++ b/tests/fixtures_server_v2.py @@ -141,7 +141,9 @@ async def __job_factory( dataset_id=dataset_id, workflow_id=workflow_id, dataset_dump=dict( - dataset.model_dump(exclude={"timestamp_created"}), + dataset.model_dump( + exclude={"timestamp_created", "history", "images"} + ), timestamp_created=_encode_as_utc(dataset.timestamp_created), ), workflow_dump=dict( From 06115643693d2734f14c2dbb19469f78652739fc Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:32:52 +0200 Subject: [PATCH 12/20] Do not raise, in api-bench, when hitting an exception --- benchmarks/api_bench.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/benchmarks/api_bench.py b/benchmarks/api_bench.py index e9a107e47b..f4a46e09a9 100644 --- a/benchmarks/api_bench.py +++ b/benchmarks/api_bench.py @@ -147,7 +147,8 @@ def get_metrics(self, user, path: str, res: Response) -> dict: exception=res.reason_phrase, ) ) - raise Exception(self.exceptions) + return {} + # raise Exception(self.exceptions) return dict(time=time_response, size=byte_size) From d89d1b5ca78ed45d6c1c8b84b66c68b8bfaeadaa Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:39:32 +0200 Subject: [PATCH 13/20] Revert "Do not raise, in api-bench, when hitting an exception" This reverts commit 06115643693d2734f14c2dbb19469f78652739fc. --- benchmarks/api_bench.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/benchmarks/api_bench.py b/benchmarks/api_bench.py index f4a46e09a9..e9a107e47b 100644 --- a/benchmarks/api_bench.py +++ b/benchmarks/api_bench.py @@ -147,8 +147,7 @@ def get_metrics(self, user, path: str, res: Response) -> dict: exception=res.reason_phrase, ) ) - return {} - # raise Exception(self.exceptions) + raise Exception(self.exceptions) return dict(time=time_response, size=byte_size) From 97602cf29bd1b38ce094586737e8f587e9b5a32c Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:52:13 +0200 Subject: [PATCH 14/20] Print more logs from benchmark GHA --- .github/workflows/benchmarks.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index a55ff4c03f..0f600f2d9d 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -62,6 +62,12 @@ jobs: poetry run python ../scripts/populate_db/populate_db_script.py poetry run sh serve.sh + - name: Print logs stderr + run: cat fractal-server.err + + - name: Print logs stdout + run: cat fractal-server.out + - name: Benchmark run: | cd benchmarks/ From 99e82c126c5432bc8da9742237e26f984f9564a0 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:57:59 +0200 Subject: [PATCH 15/20] Fix GHA --- .github/workflows/benchmarks.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 0f600f2d9d..13de53d7f3 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -62,17 +62,18 @@ jobs: poetry run python ../scripts/populate_db/populate_db_script.py poetry run sh serve.sh - - name: Print logs stderr - run: cat fractal-server.err - - - name: Print logs stdout - run: cat fractal-server.out - - name: Benchmark run: | cd benchmarks/ poetry run python api_bench.py + - name: Print logs stderr + run: cat benchmarks/fractal-server.err + + - name: Print logs stdout + run: cat benchmarks/fractal-server.out + + - name: Add comment with preview uses: mshick/add-pr-comment@v2 with: From 132f2616d20dd4944b0794bebce21b03c81263d0 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 14:09:56 +0200 Subject: [PATCH 16/20] rm extra from TaskDumpV2 and WFTDumpV2 --- fractal_server/app/schemas/v2/dumps.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fractal_server/app/schemas/v2/dumps.py b/fractal_server/app/schemas/v2/dumps.py index 3bf6738856..d211c1522d 100644 --- a/fractal_server/app/schemas/v2/dumps.py +++ b/fractal_server/app/schemas/v2/dumps.py @@ -25,7 +25,7 @@ class ProjectDumpV2(BaseModel, extra=Extra.forbid): timestamp_created: str -class TaskDumpV2(BaseModel, extra=Extra.forbid): +class TaskDumpV2(BaseModel): id: int name: str type: str @@ -70,7 +70,7 @@ def task_v1_or_v2(cls, values): return values -class WorkflowDumpV2(BaseModel, extra=Extra.forbid): +class WorkflowDumpV2(BaseModel): id: int name: str project_id: int From 06a58b2400f714fceb63ad1b1eb98757629d4d67 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:12:04 +0200 Subject: [PATCH 17/20] Fix benchmark template --- benchmarks/templates/bench_diff_template.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/benchmarks/templates/bench_diff_template.md b/benchmarks/templates/bench_diff_template.md index 87a039144b..9cd1af43a8 100644 --- a/benchmarks/templates/bench_diff_template.md +++ b/benchmarks/templates/bench_diff_template.md @@ -11,8 +11,3 @@ Current branch: `{{currentbranch}}` {%endfor%} {% endfor %} - -| Path | Status | Exception | -| -- | -- | -- | -{% for exception in exceptions %}| {{exception["path"]}} | {{exception["status"]}} | {{exception["exception"] ~ " " ~ exception["detail"] ~ string}} | -{% endfor %} From fd48d5c3a9c3ec165169b5216a685fc140c86a36 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 14:17:06 +0200 Subject: [PATCH 18/20] fix dataset dumping in test job api --- tests/v2/03_api/test_api_job.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/v2/03_api/test_api_job.py b/tests/v2/03_api/test_api_job.py index 0d3a2a68e1..73689ec2e8 100644 --- a/tests/v2/03_api/test_api_job.py +++ b/tests/v2/03_api/test_api_job.py @@ -346,7 +346,9 @@ async def test_project_apply_workflow_subset( timestamp_created=_encode_as_utc(workflow.timestamp_created), ).dict() expected_dataset_dump = DatasetDumpV2( - **dataset1.model_dump(exclude={"timestamp_created"}), + **dataset1.model_dump( + exclude={"timestamp_created", "history", "images"} + ), timestamp_created=_encode_as_utc(dataset1.timestamp_created), ).dict() assert res.json()["project_dump"] == expected_project_dump From e6888201c24c4331b86e748c83575e67e5689b65 Mon Sep 17 00:00:00 2001 From: Yuri Chiucconi Date: Tue, 30 Apr 2024 14:20:25 +0200 Subject: [PATCH 19/20] fix extra in dumps --- fractal_server/app/schemas/v2/dumps.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fractal_server/app/schemas/v2/dumps.py b/fractal_server/app/schemas/v2/dumps.py index d211c1522d..8aa625ed58 100644 --- a/fractal_server/app/schemas/v2/dumps.py +++ b/fractal_server/app/schemas/v2/dumps.py @@ -40,7 +40,7 @@ class TaskDumpV2(BaseModel): output_types: dict[str, bool] -class WorkflowTaskDumpV2(BaseModel, extra=Extra.forbid): +class WorkflowTaskDumpV2(BaseModel): id: int workflow_id: int order: Optional[int] @@ -70,7 +70,7 @@ def task_v1_or_v2(cls, values): return values -class WorkflowDumpV2(BaseModel): +class WorkflowDumpV2(BaseModel, extra=Extra.forbid): id: int name: str project_id: int From 1e21450a715727bb8a2994688fd69e1060bdfee9 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:28:28 +0200 Subject: [PATCH 20/20] Update CHANGELOG [skip ci] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6bb4e3f6c..a31e4e1aa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ * API: * Forbid extra arguments in `DumpV2` schemas (\#1445). +* Benchmarks: + * Handle some more errors in benchmark flow (\#1445). +* Tests: + * Update testing database to version 2.0.1 (\#1445). # 2.0.1