32
32
from ._validation import validate_axes_and_coordinateTransformations
33
33
from ._validation import validate_schema
34
34
from .lib_empty_ROI_table import _add_empty_ROI_table
35
- from fractal_tasks_core .channels import ChannelInputModel
36
35
from fractal_tasks_core .tasks .cellpose_segmentation import (
37
36
cellpose_segmentation ,
38
37
)
38
+ from fractal_tasks_core .tasks .cellpose_transforms import (
39
+ CellposeChannel1InputModel ,
40
+ )
41
+ from fractal_tasks_core .tasks .cellpose_transforms import (
42
+ CellposeCustomNormalizer ,
43
+ )
39
44
from fractal_tasks_core .tasks .cellvoyager_to_ome_zarr_compute import (
40
45
cellvoyager_to_ome_zarr_compute ,
41
46
)
@@ -182,16 +187,24 @@ def test_failures(
182
187
level = 3 ,
183
188
)
184
189
# Attempt 1
190
+ channel = CellposeChannel1InputModel (
191
+ wavelength_id = "invalid_wavelength_id" ,
192
+ normalize = CellposeCustomNormalizer (),
193
+ )
185
194
cellpose_segmentation (
186
195
** kwargs ,
187
- channel = ChannelInputModel ( wavelength_id = "invalid_wavelength_id" ) ,
196
+ channel = channel ,
188
197
)
189
198
assert "ChannelNotFoundError" in caplog .records [0 ].msg
190
199
191
200
# Attempt 2
201
+ channel = CellposeChannel1InputModel (
202
+ label = "invalid_channel_name" ,
203
+ normalize = CellposeCustomNormalizer (),
204
+ )
192
205
cellpose_segmentation (
193
206
** kwargs ,
194
- channel = ChannelInputModel ( label = "invalid_channel_name" ) ,
207
+ channel = channel ,
195
208
)
196
209
assert "ChannelNotFoundError" in caplog .records [0 ].msg
197
210
assert "ChannelNotFoundError" in caplog .records [1 ].msg
@@ -200,9 +213,10 @@ def test_failures(
200
213
with pytest .raises (ValueError ):
201
214
cellpose_segmentation (
202
215
** kwargs ,
203
- channel = ChannelInputModel (
216
+ channel = CellposeChannel1InputModel (
204
217
wavelength_id = "A01_C01" ,
205
218
label = "invalid_channel_name" ,
219
+ normalize = CellposeCustomNormalizer (),
206
220
),
207
221
)
208
222
@@ -237,11 +251,15 @@ def test_workflow_with_per_FOV_labeling(
237
251
debug (zarr_dir )
238
252
debug (zarr_urls )
239
253
254
+ channel = CellposeChannel1InputModel (
255
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
256
+ )
257
+
240
258
# Per-FOV labeling
241
259
for zarr_url in zarr_urls :
242
260
cellpose_segmentation (
243
261
zarr_url = zarr_url ,
244
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
262
+ channel = channel ,
245
263
level = 3 ,
246
264
relabeling = True ,
247
265
diameter_level0 = 80.0 ,
@@ -296,11 +314,17 @@ def test_workflow_with_multi_channel_input(
296
314
debug (zarr_urls )
297
315
298
316
# Per-FOV labeling
317
+ channel = CellposeChannel1InputModel (
318
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
319
+ )
320
+ channel2 = CellposeChannel1InputModel (
321
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
322
+ )
299
323
for zarr_url in zarr_urls :
300
324
cellpose_segmentation (
301
325
zarr_url = zarr_url ,
302
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
303
- channel2 = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
326
+ channel = channel ,
327
+ channel2 = channel2 ,
304
328
level = 3 ,
305
329
relabeling = True ,
306
330
diameter_level0 = 80.0 ,
@@ -345,11 +369,14 @@ def test_workflow_with_per_FOV_labeling_2D(
345
369
remove_labels = True ,
346
370
)
347
371
372
+ channel = CellposeChannel1InputModel (
373
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
374
+ )
348
375
# Per-FOV labeling
349
376
for zarr_url in zarr_urls :
350
377
cellpose_segmentation (
351
378
zarr_url = zarr_url ,
352
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
379
+ channel = channel ,
353
380
level = 2 ,
354
381
relabeling = True ,
355
382
diameter_level0 = 80.0 ,
@@ -429,11 +456,14 @@ def test_workflow_with_per_well_labeling_2D(
429
456
overwrite = True ,
430
457
)["image_list_updates" ]
431
458
459
+ channel = CellposeChannel1InputModel (
460
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
461
+ )
432
462
# Whole-well labeling
433
463
for zarr_url in zarr_urls :
434
464
cellpose_segmentation (
435
465
zarr_url = zarr_url ,
436
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
466
+ channel = channel ,
437
467
level = 2 ,
438
468
input_ROI_table = "well_ROI_table" ,
439
469
relabeling = True ,
@@ -483,11 +513,14 @@ def test_workflow_bounding_box(
483
513
debug (zarr_dir )
484
514
debug (zarr_urls )
485
515
516
+ channel = CellposeChannel1InputModel (
517
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
518
+ )
486
519
# Per-FOV labeling
487
520
for zarr_url in zarr_urls :
488
521
cellpose_segmentation (
489
522
zarr_url = zarr_url ,
490
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
523
+ channel = channel ,
491
524
level = 3 ,
492
525
relabeling = True ,
493
526
diameter_level0 = 80.0 ,
@@ -498,7 +531,7 @@ def test_workflow_bounding_box(
498
531
for zarr_url in zarr_urls :
499
532
cellpose_segmentation (
500
533
zarr_url = zarr_url ,
501
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
534
+ channel = channel ,
502
535
level = 3 ,
503
536
relabeling = True ,
504
537
diameter_level0 = 80.0 ,
@@ -511,7 +544,7 @@ def test_workflow_bounding_box(
511
544
for zarr_url in zarr_urls :
512
545
cellpose_segmentation (
513
546
zarr_url = zarr_url ,
514
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
547
+ channel = channel ,
515
548
level = 3 ,
516
549
relabeling = True ,
517
550
diameter_level0 = 80.0 ,
@@ -565,10 +598,13 @@ def test_workflow_bounding_box_with_overlap(
565
598
debug (zarr_urls )
566
599
567
600
# Per-FOV labeling
601
+ channel = CellposeChannel1InputModel (
602
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
603
+ )
568
604
for zarr_url in zarr_urls :
569
605
cellpose_segmentation (
570
606
zarr_url = zarr_url ,
571
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
607
+ channel = channel ,
572
608
level = 3 ,
573
609
relabeling = True ,
574
610
diameter_level0 = 80.0 ,
@@ -604,7 +640,7 @@ def test_workflow_with_per_FOV_labeling_via_script(
604
640
zarr_url = str (zarr_urls [0 ])
605
641
task_args = dict (
606
642
zarr_url = zarr_url ,
607
- channel = dict (wavelength_id = "A01_C01" ),
643
+ channel = dict (wavelength_id = "A01_C01" , normalize = { "type" : "default" } ),
608
644
level = 4 ,
609
645
relabeling = True ,
610
646
diameter_level0 = 80.0 ,
@@ -675,12 +711,15 @@ def test_workflow_with_per_FOV_labeling_with_empty_FOV_table(
675
711
table_name = TABLE_NAME ,
676
712
)
677
713
714
+ channel = CellposeChannel1InputModel (
715
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
716
+ )
678
717
# Per-FOV labeling
679
718
for zarr_url in zarr_urls :
680
719
cellpose_segmentation (
681
720
zarr_url = zarr_url ,
682
721
input_ROI_table = TABLE_NAME ,
683
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
722
+ channel = channel ,
684
723
level = 3 ,
685
724
relabeling = True ,
686
725
diameter_level0 = 80.0 ,
@@ -732,11 +771,14 @@ def test_CYX_input(
732
771
make_CYX = True ,
733
772
)
734
773
774
+ channel = CellposeChannel1InputModel (
775
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
776
+ )
735
777
# Per-FOV labeling
736
778
for zarr_url in zarr_urls :
737
779
cellpose_segmentation (
738
780
zarr_url = zarr_url ,
739
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
781
+ channel = channel ,
740
782
level = 0 ,
741
783
relabeling = True ,
742
784
diameter_level0 = 80.0 ,
@@ -781,10 +823,13 @@ def test_workflow_secondary_labeling(
781
823
)
782
824
783
825
# Primary segmentation (organoid)
826
+ channel = CellposeChannel1InputModel (
827
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
828
+ )
784
829
for zarr_url in zarr_urls :
785
830
cellpose_segmentation (
786
831
zarr_url = zarr_url ,
787
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
832
+ channel = channel ,
788
833
level = 0 ,
789
834
relabeling = True ,
790
835
input_ROI_table = "FOV_ROI_table" ,
@@ -812,7 +857,7 @@ def test_workflow_secondary_labeling(
812
857
for zarr_url in zarr_urls :
813
858
cellpose_segmentation (
814
859
zarr_url = zarr_url ,
815
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
860
+ channel = channel ,
816
861
level = 0 ,
817
862
relabeling = True ,
818
863
input_ROI_table = "organoid_ROI_table" ,
@@ -857,11 +902,14 @@ def test_workflow_secondary_labeling_no_labels(
857
902
make_CYX = False ,
858
903
)
859
904
905
+ channel = CellposeChannel1InputModel (
906
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
907
+ )
860
908
# Primary segmentation (organoid)
861
909
for zarr_url in zarr_urls :
862
910
cellpose_segmentation (
863
911
zarr_url = zarr_url ,
864
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
912
+ channel = channel ,
865
913
level = 0 ,
866
914
relabeling = True ,
867
915
input_ROI_table = "FOV_ROI_table" ,
@@ -886,7 +934,7 @@ def test_workflow_secondary_labeling_no_labels(
886
934
for zarr_url in zarr_urls :
887
935
cellpose_segmentation (
888
936
zarr_url = zarr_url ,
889
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
937
+ channel = channel ,
890
938
level = 0 ,
891
939
relabeling = True ,
892
940
input_ROI_table = "organoid_ROI_table" ,
@@ -927,11 +975,14 @@ def test_workflow_secondary_labeling_two_channels(
927
975
make_CYX = False ,
928
976
)
929
977
978
+ channel = CellposeChannel1InputModel (
979
+ wavelength_id = "A01_C01" , normalize = CellposeCustomNormalizer ()
980
+ )
930
981
# Primary segmentation (organoid)
931
982
for zarr_url in zarr_urls :
932
983
cellpose_segmentation (
933
984
zarr_url = zarr_url ,
934
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
985
+ channel = channel ,
935
986
level = 0 ,
936
987
relabeling = True ,
937
988
input_ROI_table = "FOV_ROI_table" ,
@@ -959,8 +1010,8 @@ def test_workflow_secondary_labeling_two_channels(
959
1010
for zarr_url in zarr_urls :
960
1011
cellpose_segmentation (
961
1012
zarr_url = zarr_url ,
962
- channel = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
963
- channel2 = ChannelInputModel ( wavelength_id = "A01_C01" ) ,
1013
+ channel = channel ,
1014
+ channel2 = channel ,
964
1015
level = 0 ,
965
1016
relabeling = True ,
966
1017
input_ROI_table = "organoid_ROI_table" ,
0 commit comments