|
| 1 | +<tool id="ridge_filter_skimage" name="Apply ridge filter" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.05"> |
| 2 | + <description>with scikit-image</description> |
| 3 | + <macros> |
| 4 | + <import>creators.xml</import> |
| 5 | + <import>tests.xml</import> |
| 6 | + <token name="@TOOL_VERSION@">0.22.0</token> |
| 7 | + <token name="@VERSION_SUFFIX@">1</token> |
| 8 | + <xml name="base_params"> |
| 9 | + <param name="black_ridges" type="select" label="Mode of operation"> |
| 10 | + <option value="true" selected="true">Enhance dark ridges (low image intensities)</option> |
| 11 | + <option value="false">Enhance bright ridges (high image intensities)</option> |
| 12 | + </param> |
| 13 | + <param name="sigma_min" type="float" value="1" min="0.1" label="Minimum sigma" help="Lower bound of the scale for multi-scale analysis."/> |
| 14 | + <param name="sigma_max" type="float" value="3" min="0.1" label="Maximum sigma" help="Upper bound of the scale for multi-scale analysis."/> |
| 15 | + <param name="num_sigma" type="integer" value="10" min="2" label="Number of sigma steps for multi-scale analysis"/> |
| 16 | + </xml> |
| 17 | + <xml name="frangi_params"> |
| 18 | + <expand macro="base_params"/> |
| 19 | + <param name="alpha" type="float" min="0" value="0.5" label="Alpha" |
| 20 | + help="Frangi correction constant that adjusts the filter's sensitivity to deviation from a plate-like structure."/> |
| 21 | + <param name="beta" type="float" min="0" value="0.5" label="Beta" |
| 22 | + help="Frangi correction constant that adjusts the filter's sensitivity to deviation from a blob-like structure."/> |
| 23 | + </xml> |
| 24 | + </macros> |
| 25 | + <creator> |
| 26 | + <expand macro="creators/bmcv"/> |
| 27 | + <expand macro="creators/kostrykin"/> |
| 28 | + </creator> |
| 29 | + <edam_operations> |
| 30 | + <edam_operation>operation_3443</edam_operation> |
| 31 | + </edam_operations> |
| 32 | + <xrefs> |
| 33 | + <xref type="bio.tools">galaxy_image_analysis</xref> |
| 34 | + <xref type="bio.tools">scikit-image</xref> |
| 35 | + <xref type="biii">scikit-image</xref> |
| 36 | + </xrefs> |
| 37 | + <requirements> |
| 38 | + <requirement type="package" version="@TOOL_VERSION@">scikit-image</requirement> |
| 39 | + <requirement type="package" version="0.5.2">giatools</requirement> |
| 40 | + </requirements> |
| 41 | + <command detect_errors="aggressive"><![CDATA[ |
| 42 | +
|
| 43 | + python '$__tool_directory__/filter_skimage.py' |
| 44 | +
|
| 45 | + '$input' |
| 46 | + '$output' |
| 47 | + '$params' |
| 48 | +
|
| 49 | + ]]></command> |
| 50 | + <configfiles> |
| 51 | + <configfile name="params"><![CDATA[ |
| 52 | + { |
| 53 | +
|
| 54 | + #if $filter.filter_type == "frangi" or $filter.filter_type == "hessian" or $filter.filter_type == "meijering" or $filter.filter_type == "sato" |
| 55 | + "black_ridges": $filter.black_ridges, |
| 56 | + "sigma_min": $filter.sigma_min, |
| 57 | + "sigma_max": $filter.sigma_max, |
| 58 | + "num_sigma": $filter.num_sigma, |
| 59 | + #end if |
| 60 | +
|
| 61 | + #if $filter.filter_type == "frangi" or $filter.filter_type == "hessian" |
| 62 | + "alpha": $filter.alpha, |
| 63 | + "beta": $filter.beta, |
| 64 | + #end if |
| 65 | +
|
| 66 | + #if $filter.filter_type == "laplace" |
| 67 | + "ksize": $filter.ksize, |
| 68 | + #end if |
| 69 | +
|
| 70 | + "dtype": "$dtype", |
| 71 | + "filter_type": "$filter.filter_type" |
| 72 | +
|
| 73 | + } |
| 74 | + ]]></configfile> |
| 75 | + </configfiles> |
| 76 | + <inputs> |
| 77 | + <param name="input" type="data" format="tiff,png" label="Input image"/> |
| 78 | + <param name="dtype" type="select" label="Output pixel type" |
| 79 | + help="Data type used to store the pixel values in the output image."> |
| 80 | + <option value="float64" selected="True">64-bit floating point</option> |
| 81 | + <option value="float32">32-bit floating point</option> |
| 82 | + <option value="float16">16-bit floating point</option> |
| 83 | + </param> |
| 84 | + <conditional name="filter"> |
| 85 | + <param name="filter_type" type="select" label="Filter"> |
| 86 | + <option value="frangi" selected="True">Frangi vesselness filter</option> |
| 87 | + <option value="hessian">Hybrid Hessian filter</option> |
| 88 | + <option value="laplace">Laplace filter</option> |
| 89 | + <option value="meijering">Meijering neuriteness filter</option> |
| 90 | + <option value="sato">Sato tubeness filter</option> |
| 91 | + </param> |
| 92 | + <when value="frangi"> |
| 93 | + <expand macro="frangi_params"/> |
| 94 | + </when> |
| 95 | + <when value="hessian"> |
| 96 | + <expand macro="frangi_params"/> |
| 97 | + </when> |
| 98 | + <when value="laplace"> |
| 99 | + <param name="ksize" type="integer" value="3" label="Kernel size" |
| 100 | + help="Define the size of the discrete Laplacian operator such that it will have the size of a hypercube with this edge length (in pixels)."/> |
| 101 | + </when> |
| 102 | + <when value="meijering"> |
| 103 | + <expand macro="base_params"/> |
| 104 | + </when> |
| 105 | + <when value="sato"> |
| 106 | + <expand macro="base_params"/> |
| 107 | + </when> |
| 108 | + </conditional> |
| 109 | + </inputs> |
| 110 | + <outputs> |
| 111 | + <data format="tiff" name="output"/> |
| 112 | + </outputs> |
| 113 | + <tests> |
| 114 | + <!-- Single-image (Q), Single-frame (T), Single-slice (Z), multi-channel (C), Frangi (dark) --> |
| 115 | + <test> |
| 116 | + <param name="input" value="scikit-image/retina.png"/> |
| 117 | + <param name="dtype" value="float16"/> |
| 118 | + <conditional name="filter"> |
| 119 | + <param name="filter_type" value="frangi"/> |
| 120 | + <param name="black_ridges" value="true"/> |
| 121 | + <param name="sigma_min" value="0.5"/> |
| 122 | + <param name="sigma_max" value="20"/> |
| 123 | + <param name="num_sigma" value="10"/> |
| 124 | + <param name="alpha" value="0.5"/> |
| 125 | + <param name="beta" value="0.5"/> |
| 126 | + </conditional> |
| 127 | + <expand macro="tests/intensity_image_diff" name="output" value="retina_frangi.tiff" ftype="tiff"/> |
| 128 | + <assert_stdout> |
| 129 | + <has_line line='Applying filter: "frangi"'/> |
| 130 | + <has_line line="Performing 2-D filtering"/> |
| 131 | + </assert_stdout> |
| 132 | + </test> |
| 133 | + <!-- Single-image (Q), Single-frame (T), Single-slice (Z), single-channel (C), Hessian (dark) --> |
| 134 | + <test> |
| 135 | + <param name="input" value="retina_0c_0z_0t_0q.tiff"/> |
| 136 | + <param name="dtype" value="float16"/> |
| 137 | + <conditional name="filter"> |
| 138 | + <param name="filter_type" value="hessian"/> |
| 139 | + <param name="black_ridges" value="true"/> |
| 140 | + <param name="sigma_min" value="0.5"/> |
| 141 | + <param name="sigma_max" value="20"/> |
| 142 | + <param name="num_sigma" value="10"/> |
| 143 | + <param name="alpha" value="0.5"/> |
| 144 | + <param name="beta" value="0.5"/> |
| 145 | + </conditional> |
| 146 | + <expand macro="tests/intensity_image_diff" name="output" value="retina_0c_0z_0t_0q_hessian.tiff" ftype="tiff"/> |
| 147 | + <assert_stdout> |
| 148 | + <has_line line='Applying filter: "hessian"'/> |
| 149 | + <has_line line="Performing 2-D filtering"/> |
| 150 | + </assert_stdout> |
| 151 | + </test> |
| 152 | + <!-- Single-image (Q), Multi-frame (T), Single-slice (Z), single-channel (C), Meijering (dark) --> |
| 153 | + <test> |
| 154 | + <param name="input" value="retina_0c_0z_3t_0q.tiff"/> |
| 155 | + <param name="dtype" value="float16"/> |
| 156 | + <conditional name="filter"> |
| 157 | + <param name="filter_type" value="meijering"/> |
| 158 | + <param name="black_ridges" value="true"/> |
| 159 | + <param name="sigma_min" value="0.5"/> |
| 160 | + <param name="sigma_max" value="20"/> |
| 161 | + <param name="num_sigma" value="10"/> |
| 162 | + </conditional> |
| 163 | + <expand macro="tests/intensity_image_diff" name="output" value="retina_0c_0z_3t_0q_meijering.tiff" ftype="tiff"/> |
| 164 | + <assert_stdout> |
| 165 | + <has_line line='Applying filter: "meijering"'/> |
| 166 | + <has_line line="Performing 2-D filtering"/> |
| 167 | + </assert_stdout> |
| 168 | + </test> |
| 169 | + <!-- Multi-image (Q), Single-frame (T), Single-slice (Z), single-channel (C), Sato (dark) --> |
| 170 | + <test> |
| 171 | + <param name="input" value="retina_0c_0z_0t_2q.tiff"/> |
| 172 | + <param name="dtype" value="float16"/> |
| 173 | + <conditional name="filter"> |
| 174 | + <param name="filter_type" value="sato"/> |
| 175 | + <param name="black_ridges" value="true"/> |
| 176 | + <param name="sigma_min" value="0.5"/> |
| 177 | + <param name="sigma_max" value="20"/> |
| 178 | + <param name="num_sigma" value="10"/> |
| 179 | + </conditional> |
| 180 | + <expand macro="tests/intensity_image_diff" name="output" value="retina_0c_0z_0t_2q_sato.tiff" ftype="tiff"/> |
| 181 | + <assert_stdout> |
| 182 | + <has_line line='Applying filter: "sato"'/> |
| 183 | + <has_line line="Performing 2-D filtering"/> |
| 184 | + </assert_stdout> |
| 185 | + </test> |
| 186 | + <!-- Single-image (Q), Single-frame (T), Multi-slice (Z), single-channel (C), Laplace --> |
| 187 | + <test> |
| 188 | + <param name="input" value="retina_0c_5z_0t_0q.tiff"/> |
| 189 | + <param name="dtype" value="float16"/> |
| 190 | + <conditional name="filter"> |
| 191 | + <param name="filter_type" value="laplace"/> |
| 192 | + <param name="ksize" value="5"/> |
| 193 | + </conditional> |
| 194 | + <expand macro="tests/intensity_image_diff" name="output" value="retina_0c_5z_0t_0q_laplace.tiff" ftype="tiff"/> |
| 195 | + <assert_stdout> |
| 196 | + <has_line line='Applying filter: "laplace"'/> |
| 197 | + <has_line line="Performing 3-D filtering"/> |
| 198 | + </assert_stdout> |
| 199 | + </test> |
| 200 | + <!-- Bright ridges, Single-image (Q), Single-frame (T), Multi-slice (Z), single-channel (C), Frangi (bright) --> |
| 201 | + <test> |
| 202 | + <param name="input" value="retina_inv_0c_0z_0t_0q.tiff"/> |
| 203 | + <param name="dtype" value="float16"/> |
| 204 | + <conditional name="filter"> |
| 205 | + <param name="filter_type" value="frangi"/> |
| 206 | + <param name="black_ridges" value="false"/> |
| 207 | + <param name="sigma_min" value="0.5"/> |
| 208 | + <param name="sigma_max" value="20"/> |
| 209 | + <param name="num_sigma" value="10"/> |
| 210 | + <param name="alpha" value="0.5"/> |
| 211 | + <param name="beta" value="0.5"/> |
| 212 | + </conditional> |
| 213 | + <expand macro="tests/intensity_image_diff" name="output" value="retina_inv_0c_0z_0t_0q_frangi.tiff" ftype="tiff"/> |
| 214 | + <assert_stdout> |
| 215 | + <has_line line='Applying filter: "frangi"'/> |
| 216 | + <has_line line="Performing 2-D filtering"/> |
| 217 | + </assert_stdout> |
| 218 | + </test> |
| 219 | + </tests> |
| 220 | + <help> |
| 221 | + |
| 222 | +**Applies a ridge filter to an image.** |
| 223 | + |
| 224 | +Ridge filters can be used to detect ridge-like structures, such as neurites, tubes, vessels, wrinkles, or rivers. Different |
| 225 | +ridge filters may be suited for detecting different structures, e.g., depending on contrast or noise level. 2-D and 3-D |
| 226 | +images are supported. For multi-channel images, the filter is applied to all channels of the image. For time-series images, |
| 227 | +the filter is also applied for all time steps. |
| 228 | + |
| 229 | +Frangi vesselness filter |
| 230 | +======================== |
| 231 | + |
| 232 | +Filter an image with the Frangi vesselness filter. This filter can be used to detect continuous ridges, e.g. vessels, |
| 233 | +wrinkles, rivers. It can be used to calculate the fraction of the whole image containing such objects. Calculates the |
| 234 | +eigenvalues of the Hessian to compute the similarity of an image region to vessels, according to the method described in |
| 235 | +Frangi et al. (1998). |
| 236 | + |
| 237 | +Hybrid Hessian filter |
| 238 | +===================== |
| 239 | + |
| 240 | +Filter an image with the Hybrid Hessian filter (Schrijver 2001, Kroon 2009). This filter can be used to detect continuous |
| 241 | +edges, e.g. vessels, wrinkles, rivers. It can be used to calculate the fraction of the whole image containing such objects. |
| 242 | +Almost equal to Frangi filter, but uses alternative method of smoothing. |
| 243 | + |
| 244 | +Laplace filter |
| 245 | +============== |
| 246 | + |
| 247 | +Find the edges of an image using the Laplace operator. |
| 248 | + |
| 249 | +Meijering neuriteness filter |
| 250 | +============================ |
| 251 | + |
| 252 | +Filter an image with the Meijering neuriteness filter. This filter can be used to detect continuous ridges, e.g. neurites, |
| 253 | +wrinkles, rivers. It can be used to calculate the fraction of the whole image containing such objects. Calculates the |
| 254 | +eigenvalues of the Hessian to compute the similarity of an image region to neurites, according to the method described in |
| 255 | +Meijering et al. (2004). |
| 256 | + |
| 257 | +Sato tubeness filter |
| 258 | +==================== |
| 259 | + |
| 260 | +Filter an image with the Sato tubeness filter. This filter can be used to detect continuous ridges, e.g. tubes, wrinkles, |
| 261 | +rivers. It can be used to calculate the fraction of the whole image containing such objects. Calculates the eigenvalues of |
| 262 | +the Hessian to compute the similarity of an image region to tubes, according to the method described in Sato et al. (1998). |
| 263 | + |
| 264 | + </help> |
| 265 | + <citations> |
| 266 | + <citation type="doi">10.1007/BFb0056195</citation> |
| 267 | + <citation type="doi">10.1002/cyto.a.20022</citation> |
| 268 | + <citation type="doi">10.1016/S1361-8415(98)80009-1</citation> |
| 269 | + </citations> |
| 270 | +</tool> |
0 commit comments