view cellpose.xml @ 1:bc1410a8a247 draft default tip

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 283d7d6ae717a1ebdf389d022126946f52e64529
author bgruening
date Wed, 07 Jan 2026 17:21:47 +0000
parents 130d15e15378
children
line wrap: on
line source

<tool id="cellposesam" name="Run generalist cell and nucleus segmentation" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.2">
    <description>with Cellpose-SAM</description>
    <macros>
        <token name="@TOOL_VERSION@">4.0.8</token>
        <token name="@VERSION_SUFFIX@">0</token>
    </macros>
    <requirements>
        <requirement type="package" version="@TOOL_VERSION@">cellpose</requirement> 
    </requirements>
    <command detect_errors="exit_code">
         <![CDATA[
        export MKL_NUM_THREADS=1
	    && mkdir ./output
		&& ln -s '${img_in}' './image.${img_in.ext}'
        
        && cellpose --image_path ./image.${img_in.ext} --no_npy --savedir ./output
		    
        #if $save_png
           --save_png 
        #end if
		    
        #if $save_tif
          --save_tif 
	    #end if
		    
	    #if $save_flows
          --save_flows 
        #end if
		    
	    #if $save_outlines
           --save_outlines 
        #end if
		    
	    #if $use_gpu
           --use_gpu 
        #end if
		    
        #if $no_norm
           --no_norm 
        #end if
		    
	    #if $diameter
            --diameter $diameter 
        #end if
		    
	    #if $no_resample
           --no_resample 
        #end if
		    
	    --flow_threshold $flow_threshold 
        --cellprob_threshold $cellprob_threshold 
        --niter $niter 
	    --anisotropy $anisotropy 

        #if $do_3D
	        --do_3D
        #end if

        #if $z_axis
            --z_axis $z_axis
	    #end if
	
	    #if $channel_axis
            --channel_axis $channel_axis
        #end if

        #if $no_interp
	        --no_interp
        #end if
	    
        #if $exclude_on_edges
            --exclude_on_edges
        #end if

	    #if $transformer 
            --transformer
	    #end if
        > ./cp.log 2>&1 
        ]]>
    </command>
    <configfiles>
        <inputs name="inputs" />
    </configfiles>
    <inputs>
	<param name="img_in" type="data" format="ome.tiff,tiff,jpg,png" label="Choose the image file for segmentation (usually after registration)">
	    <validator type="dataset_metadata_in_range" metadata_name="frames" min="0" max="1" message="Input image is multi-frame, must be single-frame"/>
	</param>
	<param name="save_png" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Save masks as png?"/>
	<param name="save_tif" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Save masks as tiff?"/>
	<param name="save_flows" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Save RGN images of flows when masks are saved?"/>
	<param name="save_outlines" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Save RGB outline images when masks are saved"/>
	<param name="z_axis" type="integer" optional="true" min="0" label="Z axis" help="The axis of the image which corresponds to the image channels and to the z axis, zero-based." />
	<param name="channel_axis" type="integer" optional="true" min="0" label="Channel axis" help="The axis (0-based) of the image which corresponds to the image channels and to the z axis" />
	<param name="use_gpu" type="boolean" checked="false" truevalue="true" falsevalue="false" label="Whether to use GPU?" />
	<section name="options" title="Advanced Options" expanded="False">
        <param name="no_norm" type="boolean" label="Do not normalize images" truevalue="true" falsevalue="false" checked="false"/>
        <param name="diameter" type="float" optional="true" label="Cell or nuclei diameter in pixels" help="Use to resize cells to the training diameter. Leave blank for automated estimation."/>
	    <param name="no_resample" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Disables flows/cellprob resampling to original image size before computing masks."
		    help="Using this flag will make more masks more jagged with larger diameter settings."/>
        <param name="no_interp" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Interpolate when running dynamics."/>
        <param name="flow_threshold" type="float" min="0" value="0.4" label="Flow error threshold (all cells with errors below threshold are kept) (not used for 3D)"/>
        <param name="cellprob_threshold" type="float" value="0.0" label="Cell probability threshold (all pixels with prob above threshold kept for masks)"/>
        <param name="niter" type="integer" min="0" value="0" label="Number of iterations"
		    help="Number of iterations for dynamics for mask creation, default of 0 means it is proportional to diameter, set to a larger number like 2000 for very long ROIs"/>
	    <param name="anisotropy" type="float" min="0" value="1.0" label="Anisotropy of volume in 3D"
		help="By default, sets the number of iterations to be proportional to the ROI diameter. For longer ROIs, more iterations might be needed."/>
        <param name="exclude_on_edges" type="boolean" checked="false" truevalue="true" falsevalue="false" label="Discard masks which touch edges of image?" />
	    <param name="do_3D" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Whether to run 3D segmentation on 4D image input?"/>
	    <param name="transformer" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Whether to use transformer backnone" help="pretrained model from Cellpose3 is transformer_cp3"/>
    </section>
        <param name="detailed_output" type="boolean" label="Detailed logging file?" help="If set, a CellPose log file will be generated." />
    </inputs>
    <outputs>
        <data format="tiff" name="cp_tiff" from_work_dir="output/image_cp_masks.tif" label="Cellpose SAM masks in TIFF">
	        <filter>save_tif</filter>
	    </data>
	    <data format="png" name="cp_png" from_work_dir="output/image_cp_masks.png" label="Cellpose SAM masks in PNG">
	        <filter>save_png</filter>
        </data>
	    <data format="tiff" name="cp_flows" from_work_dir="output/image_flows_cp_masks.tif" label="RGB images of flows">
            <filter>save_flows</filter>
	    </data>
	    <data format="tiff" name="cp_flows_dp" from_work_dir="output/image_dP_cp_masks.tif" label="RGB images of flows(dP)">
            <filter>save_flows</filter>
        </data>
	    <data format="png" name="cp_outlines" from_work_dir="output/image_outlines_cp_masks.png" label="RGB outline images">
            <filter>save_outlines</filter>
        </data>
	    <data format="txt" name="logs" from_work_dir="cp.log" label="CellPose log">
            <filter>detailed_output</filter>
        </data>
    </outputs>
    <tests>
        <test expect_num_outputs="2">
            <param name="img_in" value="image.png"/>
	        <param name="save_png" value="true" />
	        <param name="save_tif" value="true"/>
            <output name="cp_tiff" file="image_cp_masks.tiff" compare="image_diff" metric="iou"/>
	        <output name="cp_png" file="image_cp_masks.png" compare="image_diff" metric="iou"/>
	    </test>
        <test expect_num_outputs="1">
	        <param name="img_in" value="image3d.tiff"/>
            <param name="save_png" value="false"/>
	        <param name="save_tif" value="true"/>
	        <param name="use_gpu" value="true" />
	        <param name="z_axis" value="0" />
	        <section name="options">
                <param name="do_3D" value="true" />
		        <param name="no_interp" value="true" />
		        <param name="niter" value="1"/>
	        </section>
            <output name="cp_tiff" file="image3d_cp_masks.tiff" compare="image_diff"/>
        </test>
        <test expect_num_outputs="5">
	        <param name="img_in" value="image.png"/>
            <param name="save_png" value="true"/>
            <param name="save_tif" value="false"/>
	        <param name="save_flows" value="true"/>
	        <param name="save_outlines" value="true" />
	        <param name="use_gpu" value="true" />
	        <param name="detailed_output" value="true" />
	        <output name="cp_png" file="image_cp_masks.png" compare="image_diff" metric="iou"/>
            <output name="cp_flows" file="image_flows_cp_masks.tiff" compare="image_diff" />
	        <output name="cp_flows_dp" file="image_dP_cp_masks.tiff" compare="image_diff" />
	        <output name="cp_outlines" file="image_outlines_cp_masks.png" compare="image_diff"/>
            <output name="logs" ftype='txt'>
                <assert_contents>
		            <has_text_matching expression="1.15G/1.15G" />
                </assert_contents>
            </output>
        </test>
	    <test expect_num_outputs="1">
            <param name="img_in" value="image.png" />
	        <param name="save_png" value="true" />
	        <param name="save_tif" value="false" />
	        <param name="use_gpu" value="true" />
            <section name="options">
                <param name="no_norm" value="false" />
                <param name="no_resample" value="false" />
                <param name="diameter" value="10" />
                <param name="flow_threshold" value="0.5" />
                <param name="cellprob_threshold" value="0.0" />
                <param name="niter" value="10" />
                <param name="anisotropy" value="1.0" />
                <param name="do_3D" value="false" />
	            <param name="transformer" value="false" />
	        </section>
            <param name="detailed_output" value="false" />
	        <output name="cp_png" file="image_cp_masks1.png" compare="image_diff" metric="iou" eps="0.02" />
	    </test>
    </tests>
    <help>
        <![CDATA[
        Cellpose-SAM: superhuman generalization for cellular segmentation
        ]]>
    </help>
    <citations>
        <citation type="doi">https://doi.org/10.1101/2025.04.28.651001</citation>
    </citations>
</tool>