2121 */
2222package fiji .plugin .trackmate .helper .model .detector ;
2323
24+ import static fiji .plugin .trackmate .cellpose .CellposeCLI .KEY_CELLPOSE_MODEL ;
25+ import static fiji .plugin .trackmate .cellpose .CellposeCLI .KEY_CELLPOSE_PRETRAINED_OR_CUSTOM ;
26+ import static fiji .plugin .trackmate .cellpose .CellposeCLI .KEY_CELL_DIAMETER ;
27+ import static fiji .plugin .trackmate .cellpose .CellposeCLI .KEY_OPTIONAL_CHANNEL_2 ;
28+ import static fiji .plugin .trackmate .cellpose .CellposeCLIBase .KEY_CELLPOSE_CUSTOM_MODEL_FILEPATH ;
29+ import static fiji .plugin .trackmate .cellpose .CellposeCLIBase .KEY_USE_GPU ;
30+
2431import java .util .LinkedHashMap ;
2532import java .util .Map ;
2633
2734import fiji .plugin .trackmate .Dimension ;
28- import fiji .plugin .trackmate .cellpose .AbstractCellposeSettings . PretrainedModel ;
35+ import fiji .plugin .trackmate .cellpose .CellposeCLIBase ;
2936import fiji .plugin .trackmate .cellpose .CellposeDetectorFactory ;
30- import fiji .plugin .trackmate .cellpose .CellposeSettings .PretrainedModelCellpose ;
3137import fiji .plugin .trackmate .detection .DetectorKeys ;
3238import fiji .plugin .trackmate .detection .SpotDetectorFactoryBase ;
3339import fiji .plugin .trackmate .detection .ThresholdDetectorFactory ;
3440import fiji .plugin .trackmate .helper .model .parameter .AbstractArrayParamSweepModel .ArrayRangeType ;
3541import fiji .plugin .trackmate .helper .model .parameter .AbstractParamSweepModel ;
42+ import fiji .plugin .trackmate .helper .model .parameter .ArrayParamSweepModel ;
3643import fiji .plugin .trackmate .helper .model .parameter .BooleanParamSweepModel ;
3744import fiji .plugin .trackmate .helper .model .parameter .BooleanParamSweepModel .BooleanRangeType ;
45+ import fiji .plugin .trackmate .helper .model .parameter .CondaEnvParamSweepModel ;
3846import fiji .plugin .trackmate .helper .model .parameter .DoubleParamSweepModel ;
39- import fiji .plugin .trackmate .helper .model .parameter .EnumParamSweepModel ;
40- import fiji .plugin .trackmate .helper .model .parameter .IntParamSweepModel ;
4147import fiji .plugin .trackmate .helper .model .parameter .NumberParamSweepModel .RangeType ;
4248import fiji .plugin .trackmate .helper .model .parameter .StringRangeParamSweepModel ;
4349
@@ -49,53 +55,77 @@ private CellposeOpt()
4955
5056 static Map < String , AbstractParamSweepModel < ? > > createModels ()
5157 {
52- final StringRangeParamSweepModel cellposePath = new StringRangeParamSweepModel ()
53- .paramName ( "Cellpose Python path" )
54- .isFile ( true )
55- .add ( System .getProperty ( "user.home" ) );
56- final EnumParamSweepModel < PretrainedModelCellpose > cellposeModel = new EnumParamSweepModel <>( PretrainedModelCellpose .class )
57- .paramName ( "Cellpose model" )
58- .rangeType ( ArrayRangeType .FIXED )
59- .addValue ( PretrainedModelCellpose .CYTO )
60- .addValue ( PretrainedModelCellpose .CYTO2 )
61- .fixedValue ( PretrainedModelCellpose .CYTO );
58+ final CondaEnvParamSweepModel condaEnv = new CondaEnvParamSweepModel ()
59+ .paramName ( "Cellpose conda environment" );
60+
61+ final ArrayParamSweepModel < String > pretrainedOrCustom = new ArrayParamSweepModel <>( new String [] {
62+ KEY_CELLPOSE_MODEL ,
63+ KEY_CELLPOSE_CUSTOM_MODEL_FILEPATH } )
64+ .paramName ( "Use pretrained or custom model" )
65+ .addValue (KEY_CELLPOSE_MODEL )
66+ .fixedValue ( KEY_CELLPOSE_MODEL );
67+
68+ final ArrayParamSweepModel < String > pretrainedModel = new ArrayParamSweepModel <>( new String [] {
69+ "cyto3" ,
70+ "nucleitorch_0" ,
71+ "tissuenet_cp3" ,
72+ "livecell_cp3" ,
73+ "yeast_PhC_cp3" ,
74+ "yeast_BF_cp3" ,
75+ "bact_phase_cp3" ,
76+ "bact_fluor_cp3" ,
77+ "deepbacs_cp3" ,
78+ "cyto2torch_0" ,
79+ "cytotorch_0" } )
80+ .paramName ( "Pretrained model" )
81+ .addValue ( "cyto3" )
82+ .fixedValue ( "cyto3" );
83+
6284 final StringRangeParamSweepModel cellposeCustomModelPath = new StringRangeParamSweepModel ()
6385 .paramName ( "Cellpose custom model path" )
6486 .isFile ( true )
6587 .add ( System .getProperty ( "user.home" ) );
66- final IntParamSweepModel channel1 = new IntParamSweepModel ()
88+
89+ final String [] chans1 = new String [] { "0" , "1" , "2" , "3" , "4" };
90+ final ArrayParamSweepModel < String > channel1 = new ArrayParamSweepModel <>( chans1 )
91+ .rangeType ( ArrayRangeType .FIXED )
6792 .paramName ( "Channel to segment" )
68- .rangeType ( RangeType .FIXED )
69- .min ( 0 )
70- .max ( 4 );
71- final IntParamSweepModel channel2 = new IntParamSweepModel ()
93+ .fixedValue ( "0" )
94+ .addValue ( "0" );
95+
96+ final String [] chans2 = new String [] { "0" , "1" , "2" , "3" , "4" };
97+ final ArrayParamSweepModel < String > channel2 = new ArrayParamSweepModel <>( chans2 )
98+ .rangeType ( ArrayRangeType .FIXED )
7299 .paramName ( "Optional second channel" )
73- .rangeType ( RangeType . FIXED )
74- .min ( 0 )
75- . max ( 4 );
100+ .fixedValue ( "0" )
101+ .addValue ( "0" );
102+
76103 final DoubleParamSweepModel cellDiameter = new DoubleParamSweepModel ()
77104 .paramName ( "Cell diameter" )
78105 .dimension ( Dimension .LENGTH )
79106 .rangeType ( RangeType .FIXED )
80107 .min ( 0. )
81108 .max ( 50. );
109+
82110 final BooleanParamSweepModel useGPU = new BooleanParamSweepModel ()
83111 .paramName ( "Use GPU" )
84112 .rangeType ( BooleanRangeType .FIXED )
85113 .fixedValue ( true );
114+
86115 final BooleanParamSweepModel simplifyContours = new BooleanParamSweepModel ()
87116 .paramName ( "Simplify contours" )
88117 .rangeType ( BooleanRangeType .FIXED )
89118 .fixedValue ( true );
90119
91120 final Map < String , AbstractParamSweepModel < ? > > models = new LinkedHashMap <>();
92- models .put ( CellposeDetectorFactory .KEY_CELLPOSE_PYTHON_FILEPATH , cellposePath );
93- models .put ( CellposeDetectorFactory .KEY_CELLPOSE_MODEL , cellposeModel );
94- models .put ( CellposeDetectorFactory .KEY_CELLPOSE_CUSTOM_MODEL_FILEPATH , cellposeCustomModelPath );
95- models .put ( CellposeDetectorFactory .KEY_CELL_DIAMETER , cellDiameter );
121+ models .put ( CellposeCLIBase .KEY_CONDA_ENV , condaEnv );
122+ models .put ( KEY_CELLPOSE_PRETRAINED_OR_CUSTOM , pretrainedOrCustom );
123+ models .put ( KEY_CELLPOSE_MODEL , pretrainedModel );
124+ models .put ( KEY_CELLPOSE_CUSTOM_MODEL_FILEPATH , cellposeCustomModelPath );
125+ models .put ( KEY_CELL_DIAMETER , cellDiameter );
96126 models .put ( DetectorKeys .KEY_TARGET_CHANNEL , channel1 );
97- models .put ( CellposeDetectorFactory . KEY_OPTIONAL_CHANNEL_2 , channel2 );
98- models .put ( CellposeDetectorFactory . KEY_USE_GPU , useGPU );
127+ models .put ( KEY_OPTIONAL_CHANNEL_2 , channel2 );
128+ models .put ( KEY_USE_GPU , useGPU );
99129 models .put ( ThresholdDetectorFactory .KEY_SIMPLIFY_CONTOURS , simplifyContours );
100130 return models ;
101131 }
@@ -104,13 +134,4 @@ private CellposeOpt()
104134 {
105135 return new CellposeDetectorFactory <>();
106136 }
107-
108- public static Object castPretrainedModel ( final String str )
109- {
110- for ( final PretrainedModel e : PretrainedModelCellpose .values () )
111- if ( e .toString ().equals ( str ) )
112- return e ;
113-
114- return null ;
115- }
116137}
0 commit comments