Mercurial > repos > bgruening > cp_identify_primary_objects
comparison identify_primary_objects.xml @ 0:6d011deed7cb draft
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 6d73056a625002d0275b5a9a90a9fae329ce47f1"
| author | bgruening |
|---|---|
| date | Thu, 26 Mar 2020 20:04:27 +0000 |
| parents | |
| children | f42416baea78 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:6d011deed7cb |
|---|---|
| 1 <tool id="cp_identify_primary_objects" name="IdentifyPrimaryObjects" version="@CP_VERSION@"> | |
| 2 <description>module of CellProfiler</description> | |
| 3 | |
| 4 <macros> | |
| 5 <import>macros.xml</import> | |
| 6 <xml name="ipo_common"> | |
| 7 <param name="input_from_nat" type="text" label="Select the input image (from NamesAndTypes)"> | |
| 8 <expand macro="text_validator" /> | |
| 9 </param> | |
| 10 <param name="name_to_be_identified" type="text" label="Name the primary objects to be identified"> | |
| 11 <expand macro="text_validator" /> | |
| 12 </param> | |
| 13 <param name="min_diameter" type="integer" label="Typical minimum diameter of objects, in pixel units (Min)" value="15" min="0" /> | |
| 14 <param name="max_diameter" type="integer" label="Typical maximum diameter of objects, in pixel units (Max)" value="200" min="0" /> | |
| 15 <param name="discard_outside_border" type="select" display="radio" label="Discard objects outside the diameter range?"> | |
| 16 <option value="Yes">Yes</option> | |
| 17 <option value="No">No</option> | |
| 18 </param> | |
| 19 <param name="discard_touching_border" type="select" display="radio" label="Discard objects touching the border of the image?"> | |
| 20 <option value="Yes">Yes</option> | |
| 21 <option value="No">No</option> | |
| 22 </param> | |
| 23 </xml> | |
| 24 | |
| 25 <xml name="clumped_objects_params"> | |
| 26 <conditional name="con_smoothing_filter"> | |
| 27 <param name="smoothing_filter" type="select" label="Automatically calculate size of smoothing filter for decluping?"> | |
| 28 <option value="Yes">Yes</option> | |
| 29 <option value="No">No</option> | |
| 30 </param> | |
| 31 <when value="No"> | |
| 32 <param name="size_smoothing_filter" type="integer" label="Size of smoothing filter" value="1"/> | |
| 33 </when> | |
| 34 <when value="Yes" /> | |
| 35 </conditional> | |
| 36 <conditional name="con_min_distance"> | |
| 37 <param name="min_distance" type="select" label="Automatically calculate minimum allowed distance between local maxima?"> | |
| 38 <option value="Yes">Yes</option> | |
| 39 <option value="No">No</option> | |
| 40 </param> | |
| 41 <when value="No"> | |
| 42 <param name="min_allowed_distance" type="integer" label="Supress local maxima that are closer than this minimum allowed distance" value="1" /> | |
| 43 </when> | |
| 44 <when value="Yes" /> | |
| 45 </conditional> | |
| 46 <param name="speed_up" type="select" display="radio" label="Speed up by using lower-resolution image to find local maxima?"> | |
| 47 <option value="Yes">Yes</option> | |
| 48 <option value="No">No</option> | |
| 49 </param> | |
| 50 </xml> | |
| 51 | |
| 52 <xml name="clumped_objects"> | |
| 53 <conditional name="con_dividing_lines"> | |
| 54 <param name="dividing_lines" type="select" label="Method to draw dividing lines between clumped objects"> | |
| 55 <option value="Intensity">Intensity</option> | |
| 56 <option value="Shape">Shape</option> | |
| 57 <option value="Propagate">Propagate</option> | |
| 58 <option value="None">None</option> | |
| 59 </param> | |
| 60 <when value="Shape"> | |
| 61 <expand macro="clumped_objects_params"/> | |
| 62 </when> | |
| 63 <when value="Intensity"> | |
| 64 <expand macro="clumped_objects_params"/> | |
| 65 </when> | |
| 66 <when value="Propagate"/> | |
| 67 <when value="None"/> | |
| 68 </conditional> | |
| 69 </xml> | |
| 70 </macros> | |
| 71 | |
| 72 <expand macro="py_requirements"/> | |
| 73 <expand macro="cmd_modules" /> | |
| 74 | |
| 75 <configfiles> | |
| 76 <inputs name="inputs" /> | |
| 77 | |
| 78 <configfile name="script_file"> | |
| 79 import json | |
| 80 import sys | |
| 81 import os | |
| 82 | |
| 83 FOURSPACES=@SPACES@ | |
| 84 | |
| 85 input_json_path = sys.argv[1] | |
| 86 input_pipeline= sys.argv[2] | |
| 87 | |
| 88 params = json.load(open(input_json_path, "r")) | |
| 89 | |
| 90 ipo = params['con_advanced'] | |
| 91 | |
| 92 adv = params['con_advanced']['advanced'] | |
| 93 | |
| 94 | |
| 95 def write_ipo(): | |
| 96 _str = "\nIdentifyPrimaryObjects:[module_num:%d|svn_version:\\'Unknown\\'|variable_revision_number:13|show_window:True|notes:\\x5B\\'Identify the nuclei from the DNA channel.\\', \\'PARAMS\\x3A\\', \\'- Typical diameter of objects (Min,Max)\\', \\'- Method to distinguish clumped objects\\x3A Shape/None. With Shape, the distance between the 2 centers can be changed.\\'\\x5D|batch_state:array(\\x5B\\x5D, dtype=uint8)|enabled:True|wants_pause:False]\n" % new_count | |
| 97 | |
| 98 if adv == "Yes": | |
| 99 _str += FOURSPACES + "Select the input image:%s\n" % ipo['input_from_nat'] | |
| 100 _str += FOURSPACES + "Name the primary objects to be identified:%s\n" % ipo['name_to_be_identified'] | |
| 101 _str += FOURSPACES + "Typical diameter of objects, in pixel units (Min,Max):%d,%d\n" % (ipo['min_diameter'], ipo['max_diameter']) | |
| 102 _str += FOURSPACES + "Discard objects outside the diameter range?:%s\n" % ipo['discard_outside_border'] | |
| 103 _str += FOURSPACES + "Discard objects touching the border of the image?:%s\n" % ipo['discard_touching_border'] | |
| 104 | |
| 105 _str += FOURSPACES + "Method to distinguish clumped objects:%s\n" % ipo['con_distinguish_clumped_objects']['distinguish_clumped_objects'] | |
| 106 | |
| 107 if "con_dividing_lines" in ipo['con_distinguish_clumped_objects']: | |
| 108 smoothing = ipo['con_distinguish_clumped_objects']['con_dividing_lines']['con_smoothing_filter'][ | |
| 109 'smoothing_filter'] | |
| 110 supress = ipo['con_distinguish_clumped_objects']['con_dividing_lines']['con_min_distance']['min_distance'] | |
| 111 | |
| 112 _str += FOURSPACES + "Method to draw dividing lines between clumped objects:%s\n" % ipo['con_distinguish_clumped_objects']['con_dividing_lines']['dividing_lines'] | |
| 113 | |
| 114 if smoothing == "Yes": | |
| 115 _str += FOURSPACES + "Size of smoothing filter:0\n" | |
| 116 else: | |
| 117 _str += FOURSPACES + "Size of smoothing filter:%d\n" % ipo['con_distinguish_clumped_objects']['con_dividing_lines']['con_smoothing_filter']['size_smoothing_filter'] | |
| 118 | |
| 119 if supress == "Yes": | |
| 120 _str += FOURSPACES + "Suppress local maxima that are closer than this minimum allowed distance:7\n" | |
| 121 else: | |
| 122 _str += FOURSPACES + "Suppress local maxima that are closer than this minimum allowed distance:%d\n" % ipo['con_distinguish_clumped_objects']['con_dividing_lines']['con_min_distance']['min_allowed_distance'] | |
| 123 | |
| 124 _str += FOURSPACES + "Speed up by using lower-resolution image to find local maxima?:%s\n" % ipo['con_distinguish_clumped_objects']['con_dividing_lines']['speed_up'] | |
| 125 | |
| 126 _str += FOURSPACES + "Fill holes in identified objects?:%s\n" % ipo['fill_hole'] | |
| 127 | |
| 128 if "con_dividing_lines" in ipo['con_distinguish_clumped_objects']: | |
| 129 _str += FOURSPACES + "Automatically calculate size of smoothing filter for declumping?:%s\n" % ipo['con_distinguish_clumped_objects']['con_dividing_lines']['con_smoothing_filter']['smoothing_filter'] | |
| 130 _str += FOURSPACES + "Automatically calculate minimum allowed distance between local maxima?:%s\n" % ipo['con_distinguish_clumped_objects']['con_dividing_lines']['con_min_distance']['min_distance'] | |
| 131 | |
| 132 if "con_handling_excessive" in ipo: | |
| 133 excessive = ipo['con_handling_excessive']['excessive_handling'] | |
| 134 | |
| 135 _str += FOURSPACES + "Handling of objects if excessive number of objects identified:%s\n" % ipo['con_handling_excessive']['excessive_handling'] | |
| 136 if excessive == "Continue": | |
| 137 _str += FOURSPACES + "Maximum number of objects:500\n" | |
| 138 else: | |
| 139 _str += FOURSPACES + "Maximum number of objects:%d\n" + ipo['con_handling_excessive']['max_obj'] | |
| 140 | |
| 141 _str += FOURSPACES + "Use advanced settings?:%s\n" % ipo['advanced'] | |
| 142 _str += FOURSPACES + "Threshold settings version:10\n" | |
| 143 _str += FOURSPACES + "Threshold strategy:%s\n" % ipo['con_threshold_strategy']['threshold_strategy'] | |
| 144 | |
| 145 threshold_method = ipo['con_threshold_method']['threshold_method'] | |
| 146 _str += FOURSPACES + "Thresholding method:%s\n" % threshold_method | |
| 147 | |
| 148 _str += FOURSPACES + "Threshold smoothing scale:%.4f\n" % ipo['threshold_smoothing_scale'] | |
| 149 _str += FOURSPACES + "Threshold correction factor:%.1f\n" % ipo['threshold_correction_factor'] | |
| 150 _str += FOURSPACES + "Lower and upper bounds on threshold:%.1f,%.1f\n" % (ipo['threshold_lower'], ipo['threshold_upper']) | |
| 151 | |
| 152 if threshold_method == "Manual": | |
| 153 _str += FOURSPACES + "Manual threshold:%d\n" % ipo['con_threshold_method']['manual_threshold'] | |
| 154 else: | |
| 155 _str += FOURSPACES + "Manual threshold:0\n" | |
| 156 | |
| 157 if threshold_method == "Measurement": | |
| 158 _str += FOURSPACES + "Select the measurement to threshold with:%s\n" % ipo['con_threshold_method']['threshold_measurement'] | |
| 159 else: | |
| 160 _str += FOURSPACES + "Select the measurement to threshold with:None\n" | |
| 161 | |
| 162 threshold_class = ipo['con_threshold_method']['con_threshold_class']['threshold_class'] | |
| 163 _str += FOURSPACES + "Two-class or three-class thresholding?:%s\n" % threshold_class | |
| 164 | |
| 165 if threshold_class == "Three classes": | |
| 166 _str += FOURSPACES + "Assign pixels in the middle intensity class to the foreground or the background?:%s\n" % threshold_class['assign_pixel'] | |
| 167 else: | |
| 168 _str += FOURSPACES + "Assign pixels in the middle intensity class to the foreground or the background?:Foreground\n" | |
| 169 | |
| 170 if ipo['con_threshold_strategy']['threshold_strategy'] == "Adaptive": | |
| 171 _str += FOURSPACES + "Size of adaptive window:%d\n" + ipo['con_threshold_strategy']['adaptive_window'] | |
| 172 else: | |
| 173 _str += FOURSPACES + "Size of adaptive window:500\n" | |
| 174 | |
| 175 if threshold_method == "RobustBackground": | |
| 176 _str += FOURSPACES + "Lower outlier fraction:%.2f\n" % ipo['con_threshold_method']['lower_outlier_fraction'] | |
| 177 _str += FOURSPACES + "Upper outlier fraction:%.2f\n" % ipo['con_threshold_method']['upper_outlier_fraction'] | |
| 178 _str += FOURSPACES + "Averaging method:%s\n" % ipo['con_threshold_method']['avg_method'] | |
| 179 _str += FOURSPACES + "Variance method:%s\n" % ['variance_method'] | |
| 180 _str += FOURSPACES + "# of deviations:%.2f\n" % ipo['con_threshold_method']['no_of_deviations'] | |
| 181 else: | |
| 182 _str += FOURSPACES + "Lower outlier fraction:0.05\n" | |
| 183 _str += FOURSPACES + "Upper outlier fraction:0.05\n" | |
| 184 _str += FOURSPACES + "Averaging method:Mean\n" | |
| 185 _str += FOURSPACES + "Variance method:Standard deviation\n" | |
| 186 _str += FOURSPACES + "# of deviations:2.0\n" | |
| 187 | |
| 188 _str += FOURSPACES + "Thresholding method:%s\n" % threshold_method # This is a repeated entry, but needed for pipeline file | |
| 189 | |
| 190 return _str | |
| 191 | |
| 192 | |
| 193 with open(input_pipeline) as fin: | |
| 194 lines = fin.readlines() | |
| 195 | |
| 196 k, v = lines[4].strip().split(':') | |
| 197 | |
| 198 module_count = int(v) | |
| 199 new_count = module_count + 1 | |
| 200 lines[4] = k + ":%d\n" % new_count | |
| 201 with open("output", "w") as f: | |
| 202 f.writelines(lines) | |
| 203 f.write(write_ipo()) | |
| 204 | |
| 205 f.close() | |
| 206 </configfile> | |
| 207 </configfiles> | |
| 208 | |
| 209 <inputs> | |
| 210 <expand macro="input_pipeline_macro" /> | |
| 211 <conditional name="con_advanced"> | |
| 212 <param name="advanced" type="select" display="radio" label="Use advanced settings?"> | |
| 213 <option value="No">No</option> | |
| 214 <option value="Yes">Yes</option> | |
| 215 </param> | |
| 216 <when value="No"> | |
| 217 <expand macro="ipo_common" /> | |
| 218 </when> | |
| 219 <when value="Yes"> | |
| 220 <expand macro="ipo_common" /> | |
| 221 <conditional name="con_threshold_strategy"> | |
| 222 <param name="threshold_strategy" type="select" label="Threshold strategy"> | |
| 223 <option value="Global">Global</option> | |
| 224 <option value="Adaptive">Adaptive</option> | |
| 225 </param> | |
| 226 <when value="Adaptive"> | |
| 227 <param name="adaptive_window" type="integer" label="Size of adaptive window" value="500"/> | |
| 228 </when> | |
| 229 <when value="Global" /> | |
| 230 </conditional> | |
| 231 <conditional name="con_threshold_method"> | |
| 232 <param name="threshold_method" type="select" label="Thresholding method"> | |
| 233 <option value="Manual">Manual</option> | |
| 234 <option value="Measurement">Measurement</option> | |
| 235 <option value="Minimum cross entropy">Minimum cross entropy</option> | |
| 236 <option value="Otsu">Otsu</option> | |
| 237 <option value="RobustBackground">RobustBackground</option> | |
| 238 </param> | |
| 239 <when value="Otsu"> | |
| 240 <conditional name="con_threshold_class"> | |
| 241 <param name="threshold_class" type="select" label="Two-class or three-class thresholding?"> | |
| 242 <option value="Two classes">Two classes</option> | |
| 243 <option value="Three classes">Three classes</option> | |
| 244 </param> | |
| 245 <when value="Three classes"> | |
| 246 <param name="assign_pixel" type="select" label="Assign pixels in the middle intensity class to the foreground or the background?"> | |
| 247 <option value="Foreground">Foreground</option> | |
| 248 <option value="Background">Background</option> | |
| 249 </param> | |
| 250 </when> | |
| 251 <when value="Two classes" /> | |
| 252 </conditional> | |
| 253 </when> | |
| 254 <when value="Manual"> | |
| 255 <param name="manual_threshold" type="integer" label="Manual threshold" value="0" /> | |
| 256 </when> | |
| 257 <when value="RobustBackground"> | |
| 258 <param name="lower_outlier_fraction" type="float" value="0.05" label="Lower outlier fraction" /> | |
| 259 <param name="upper_outlier_fraction" type="float" value="0.05" label="Upper outlier fraction" /> | |
| 260 <param name="avg_method" type="select" label="Averaging method"> | |
| 261 <option value="Mean">Mean</option> | |
| 262 <option value="Median">Median</option> | |
| 263 <option value="Mode">Mode</option> | |
| 264 </param> | |
| 265 <param name="variance_method" type="select" label="Variance"> | |
| 266 <option value="Standard deviation">Standard deviation</option> | |
| 267 <option value="Median absolute deviation">Median absolute deviation</option> | |
| 268 </param> | |
| 269 <param name="no_of_deviations" type="float" value="2.0" label="# of deviations" /> | |
| 270 </when> | |
| 271 <when value="Measurement"/> | |
| 272 <when value="Minimum cross entropy"/> | |
| 273 </conditional> | |
| 274 <param name="threshold_smoothing_scale" type="float" value="0.0" label="Threshold smoothing scale"/> | |
| 275 <param name="threshold_correction_factor" type="float" value="0.0" label="Threshold correction factor"/> | |
| 276 <param name="threshold_lower" type="float" value="0.0" label="Lower bounds on threshold"/> | |
| 277 <param name="threshold_upper" type="float" value="1.0" label="Upper bounds on threshold"/> | |
| 278 <conditional name="con_distinguish_clumped_objects"> | |
| 279 <param name="distinguish_clumped_objects" type="select" label="Method to distinguish clumped objects"> | |
| 280 <option value="Shape">Shape</option> | |
| 281 <option value="Intensity">Intensity</option> | |
| 282 <option value="None">None</option> | |
| 283 </param> | |
| 284 <when value="Shape"> | |
| 285 <expand macro="clumped_objects"/> | |
| 286 </when> | |
| 287 <when value="Intensity"> | |
| 288 <expand macro="clumped_objects"/> | |
| 289 </when> | |
| 290 <when value="None"/> | |
| 291 </conditional> | |
| 292 <param name="fill_hole" type="select" label="Fill holes in identified objects"> | |
| 293 <option value="Never">Never</option> | |
| 294 <option value="After both thresholding and declumping">After both thresholding and declumping</option> | |
| 295 <option value="After declumping only">After declumping only</option> | |
| 296 </param> | |
| 297 | |
| 298 <conditional name="con_handling_excessive"> | |
| 299 <param name="excessive_handling" type="select" label="Handling of objects if excessive number of objects identified"> | |
| 300 <option value="Continue">Continue</option> | |
| 301 <option value="Erase">Erase</option> | |
| 302 </param> | |
| 303 <when value="Erase"> | |
| 304 <param name="max_obj" type="integer" value="500" label="Maximum number of objects" /> | |
| 305 </when> | |
| 306 <when value="Continue" /> | |
| 307 </conditional> | |
| 308 </when> | |
| 309 </conditional> | |
| 310 </inputs> | |
| 311 | |
| 312 <outputs> | |
| 313 <expand macro="output_pipeline_macro" /> | |
| 314 </outputs> | |
| 315 | |
| 316 <tests> | |
| 317 <test> | |
| 318 <expand macro="test_input_pipeline_param" /> | |
| 319 <conditional name="con_advanced"> | |
| 320 <param name="advanced" value="Yes" /> | |
| 321 <param name="input_from_nat" value="DNA" /> | |
| 322 <param name="name_to_be_identified" value="Nuclei" /> | |
| 323 <param name="min_diameter" value="15" /> | |
| 324 <param name="max_diameter" value="200" /> | |
| 325 <param name="discard_outside_border" value="Yes" /> | |
| 326 <param name="discard_touching_border" value="Yes" /> | |
| 327 <conditional name="con_threshold_strategy"> | |
| 328 <param name="threshold_strategy" value="Global" /> | |
| 329 </conditional> | |
| 330 <conditional name="con_threshold_method"> | |
| 331 <param name="threshold_method" value="Otsu" /> | |
| 332 <conditional name="con_threshold_class" > | |
| 333 <param name="threshold_class" value="Two classes" /> | |
| 334 </conditional> | |
| 335 </conditional> | |
| 336 <param name="threshold_smoothing_scale" value="1.3488" /> | |
| 337 <param name="threshold_correction_factor" value="0.9" /> | |
| 338 <param name="threshold_lower" value="0.0" /> | |
| 339 <param name="threshold_upper" value="1.0" /> | |
| 340 <conditional name="con_distinguish_clumped_objects"> | |
| 341 <param name="distinguish_clumped_objects" value="Shape" /> | |
| 342 <conditional name="con_dividing_lines"> | |
| 343 <param name="dividing_lines" value="Shape" /> | |
| 344 <conditional name="con_smoothing_filter"> | |
| 345 <param name="smoothing_filter" value="Yes" /> | |
| 346 </conditional> | |
| 347 <conditional name="con_min_distance"> | |
| 348 <param name="min_distance" value="Yes" /> | |
| 349 </conditional> | |
| 350 <param name="speed_up" value="Yes" /> | |
| 351 </conditional> | |
| 352 </conditional> | |
| 353 <conditional name="con_handling_excessive"> | |
| 354 <param name="excessive_handling" value="Continue" /> | |
| 355 </conditional> | |
| 356 <param name="fill_hole" value="After both thresholding and declumping" /> | |
| 357 </conditional> | |
| 358 <expand macro="test_out_file" file="identify_primary_objects.txt" /> | |
| 359 </test> | |
| 360 </tests> | |
| 361 | |
| 362 <expand macro="help" module="IdentifyPrimaryObjects"/> | |
| 363 | |
| 364 <expand macro="citations" /> | |
| 365 | |
| 366 </tool> | |
| 367 |
