view pytorch_embedding.xml @ 0:38333676a029 draft default tip

planemo upload for repository https://github.com/goeckslab/gleam.git commit f57ec1ad637e8299db265ee08be0fa9d4d829b93
author goeckslab
date Thu, 19 Jun 2025 23:33:23 +0000
parents
children
line wrap: on
line source

<tool id="extract_embeddings" name="Image Embedding Extraction" version="1.0.0">
    <description>Extract image embeddings using a deep learning model</description>

    <requirements>
        <container type="docker">quay.io/goeckslab/galaxy-ludwig-gpu:0.10.1</container>
    </requirements>
    <stdio>
        <exit_code range="137" level="fatal_oom" description="Out of Memory" />
        <exit_code range="1:" level="fatal" description="Error occurred. Please check Tool Standard Error" />
    </stdio>
    <command><![CDATA[
        mkdir -p "./hf_cache" &&
        export HF_HOME="./hf_cache" &&
        export TORCH_HOME="./hf_cache" &&
        python $__tool_directory__/pytorch_embedding.py 
        --zip_file "$input_zip"
        --output_csv "$output_csv"
        --model_name "$model_name"
        #if $apply_normalization
            --normalize
        #end if
        #if $ludwig_format
        --ludwig_format
        #end if
        --transform_type "$transform_type"
    ]]></command>
    <configfiles>
        <inputs name="inputs" />
    </configfiles>
    <inputs>
        <param argument="input_zip" type="data" format="zip" label="Input Zip File (Images)" help="Provide a zip file containing images to process." />
        <param argument="model_name" type="select" label="Model for Embedding Extraction" help="Select the model to use for embedding extraction.">
            <option value="alexnet">AlexNet</option>
            <option value="convnext_tiny">ConvNeXt-Tiny</option>
            <option value="convnext_small">ConvNeXt-Small</option>
            <option value="convnext_base">ConvNeXt-Base</option>
            <option value="convnext_large">ConvNeXt-Large</option>
            <option value="densenet121">DenseNet121</option>
            <option value="densenet161">DenseNet161</option>
            <option value="densenet169">DenseNet169</option>
            <option value="densenet201">DenseNet201</option>
            <option value="efficientnet_b0" >EfficientNet-B0</option>
            <option value="efficientnet_b1">EfficientNet-B1</option>
            <option value="efficientnet_b2">EfficientNet-B2</option>
            <option value="efficientnet_b3">EfficientNet-B3</option>
            <option value="efficientnet_b4">EfficientNet-B4</option>
            <option value="efficientnet_b5">EfficientNet-B5</option>
            <option value="efficientnet_b6">EfficientNet-B6</option>
            <option value="efficientnet_b7">EfficientNet-B7</option>
            <option value="efficientnet_v2_s">EfficientNetV2-S</option>
            <option value="efficientnet_v2_m">EfficientNetV2-M</option>
            <option value="efficientnet_v2_l">EfficientNetV2-L</option>
            <option value="googlenet">GoogLeNet</option>
            <option value="inception_v3">Inception-V3</option>
            <option value="mnasnet0_5">MNASNet-0.5</option>
            <option value="mnasnet0_75">MNASNet-0.75</option>
            <option value="mnasnet1_0">MNASNet-1.0</option>
            <option value="mnasnet1_3">MNASNet-1.3</option>
            <option value="mobilenet_v2">MobileNetV2</option>
            <option value="mobilenet_v3_large">MobileNetV3-Large</option>
            <option value="mobilenet_v3_small">MobileNetV3-Small</option>
            <option value="regnet_x_400mf">RegNet-X-400MF</option>
            <option value="regnet_x_800mf">RegNet-X-800MF</option>
            <option value="regnet_x_1_6gf">RegNet-X-1.6GF</option>
            <option value="regnet_x_3_2gf">RegNet-X-3.2GF</option>
            <option value="regnet_x_8gf">RegNet-X-8GF</option>
            <option value="resnet18">ResNet-18</option>
            <option value="resnet34">ResNet-34</option>
            <option value="resnet50" selected="true">ResNet-50</option>
            <option value="resnet101">ResNet-101</option>
            <option value="resnet152">ResNet-152</option>
            <option value="resnext50_32x4d">ResNeXt-50-32x4d</option>
            <option value="resnext101_32x8d">ResNeXt-101-32x8d</option>
            <option value="shufflenet_v2_x0_5">ShuffleNetV2-0.5x</option>
            <option value="shufflenet_v2_x1_0">ShuffleNetV2-1.0x</option>
            <option value="squeezenet1_0">SqueezeNet1.0</option>
            <option value="squeezenet1_1">SqueezeNet1.1</option>
            <option value="swin_b">Swin-B</option>
            <option value="swin_s">Swin-S</option>
            <option value="swin_t">Swin-T</option>
            <option value="vgg11">VGG-11</option>
            <option value="vgg13">VGG-13</option>
            <option value="vgg16">VGG-16</option>
            <option value="vgg19">VGG-19</option>
            <option value="vit_b_16">ViT-B-16</option>
            <option value="vit_b_32">ViT-B-32</option>
            <option value="wide_resnet50_2">Wide-ResNet50-2</option>
            <option value="wide_resnet101_2">Wide-ResNet101-2</option>
        </param>
        <param argument="apply_normalization" type="boolean" label="Apply Normalization" help="Enable or disable normalization of embeddings." checked="true"/>
        <param argument="transform_type" type="select" label="Image Transformation Type" help="Choose the transformation type to apply before extraction.">
            <option value="RGB" selected="true">RGB</option>
            <option value="grayscale">Grayscale</option>
            <option value="rgba_to_rgb">RGBA to RGB</option>
            <option value="clahe">CLAHE (Contrast Limited Adaptive Histogram Equalization)</option>
            <option value="edges">Edge Detection</option>
        </param>
        <param name="ludwig_format" type="boolean" optional="true" label="Convert vectors (stored as columns) into a single string column (Ludwig Format)?"/>
        </inputs>
    <outputs>
        <data name="output_csv" format="csv" label="Extracted Embeddings" />
    </outputs>

    <tests>
        <test>
            <param name="input_zip" value="1_digit.zip" ftype="zip" />
            <param name="model_name" value="resnet50" />
            <param name="apply_normalization" value="true" />
            <param name="transform_type" value="RGB" />
            <output name="output_csv">
                <assert_contents>
                    <has_text text="sample_name" />
                    <has_n_columns min="1" />
                </assert_contents>
            </output>
        </test>
    </tests>
    <help>
        <![CDATA[
        **What it does**
        This tool extracts image embeddings using a selected deep learning model.

        **Inputs**
        - A zip file containing images to process.
        - A model selection for embedding extraction.
        - An option to apply normalization to the extracted embeddings.
        - A choice of image transformation type before processing.

        **Outputs**
        - A CSV file containing embeddings. Each row corresponds to an image, with the file name in the first column and embedding vectors in the subsequent columns.
        ]]>
    </help>
</tool>