view gem_knockout.xml @ 0:1cea77c3c471 draft default tip

planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
author iuc
date Fri, 13 Dec 2024 21:33:47 +0000
parents
children
line wrap: on
line source

<tool id="gem_knockout" name="Gene knockout analysis" version="@VERSION@" profile="@PROFILE@">
    <description>
        on a GEM
    </description>
    <macros>
        <import>gem_macros.xml</import>
    </macros>
    <expand macro="requirements"/>
    <expand macro="version_command_cobra"/>
    <command>
        python '$__tool_directory__/gem_knockout.py'
        --cb_model_location '${cb_model_location}'
        --output '${output}'
        --knockout_type '${knockout_type}'
        #if $gene_knockouts:
            --gene_knockouts '${gene_knockouts}'
        #end if
        #if $uptake_constraints_file:
            --uptake_constraints_file '${uptake_constraints_file}'
        #end if
    </command>
    <inputs>
        <expand macro="input_model"/>
        <param name="knockout_type" type="select" label="Type of knockout analysis">
            <option value="single">Single gene knockouts</option>
            <option value="double">Double gene knockouts</option>
        </param>
        <param name="gene_knockouts" type="text" optional="true" label="Specific genes to knockout (comma-separated)" help="Leave empty to analyze all genes">
            <validator type="regex" message="Genes must be comma-separated, alphanumeric, and underscore characters only">^([a-zA-Z0-9_]+,?)+$</validator>
        </param>
        <expand macro="input_uptake_constraints"/>
    </inputs>
    <outputs>
        <expand macro="output"/>
    </outputs>
    <tests>
        <!-- Test 1: Single gene knockout analysis -->
        <test>
            <param name="cb_model_location" value="textbook_model_cobrapy.xml"/>
            <param name="knockout_type" value="single"/>
            <output name="output" file="expected_single_knockout.csv"/>
        </test>
        <!-- Test 2: Single gene knockout analysis with specific genes -->
        <test>
            <param name="cb_model_location" value="textbook_model_cobrapy.xml"/>
            <param name="knockout_type" value="single"/>
            <param name="gene_knockouts" value="b0351,b2296"/>
            <output name="output">
                <assert_contents>
                    <has_line line="reaction_id;ko_gene_id_1;ko_gene_id_2;reaction;wildtype_flux;knockout_flux"/>
                </assert_contents>
            </output>
        </test>
        <!-- Test 3: Double gene knockout analysis -->
        <test>
            <param name="cb_model_location" value="textbook_model_cobrapy.xml"/>
            <param name="knockout_type" value="double"/>
            <param name="gene_knockouts" value="b0351,b2296,b1849"/>
            <output name="output">
                <assert_contents>
                    <has_line line="reaction_id;ko_gene_id_1;ko_gene_id_2;reaction;wildtype_flux;knockout_flux"/>
                </assert_contents>
            </output>
        </test>
        <!-- Test 4: Single gene knockout analysis with uptake constraints -->
        <test>
            <param name="cb_model_location" value="textbook_model_cobrapy.xml"/>
            <param name="knockout_type" value="single"/>
            <param name="uptake_constraints_file" value="textbook_model_cobrapy_exchange.csv"/>
            <output name="output">
                <assert_contents>
                    <has_line line="reaction_id;ko_gene_id_1;ko_gene_id_2;reaction;wildtype_flux;knockout_flux"/>
                </assert_contents>
            </output>
        </test>
        <!-- Test 5: Double gene knockout analysis with invalid model file -->
        <test expect_failure="true">
            <param name="cb_model_location" value="invalid_format.txt"/>
            <assert_stderr>
                <has_text text="The model could not be read"/>
            </assert_stderr>
        </test>
        <!-- Test 5: Double gene knockout analysis with invalid gene names -->
        <test expect_failure="true">
            <param name="cb_model_location" value="textbook_model_cobrapy.xml"/>
            <param name="knockout_type" value="double"/>
            <param name="gene_knockouts" value="abc,123"/>
            <assert_stderr>
                <has_text text="One or more of the genes to knockout are not present in the model"/>
            </assert_stderr>
        </test>
    </tests>
    <help><![CDATA[
        Gene Knockout Analysis

        This tool performs single or double gene knockout analysis on a Genome-scale Metabolic Model (GEM) using Flux Balance Analysis (FBA).

        Input Parameters

        **Model File**: A GEM in SBML format (.xml) that will be analyzed.

        **Knockout Type**: Choose between:
        - Single gene knockouts: Analyze the effect of removing one gene at a time
        - Double gene knockouts: Analyze the effect of removing pairs of genes

        **Genes to Knockout** (optional): Specify particular genes to analyze. If left empty, all genes in the model will be analyzed.

        **Uptake Constraints File** (optional): A CSV file specifying constraints for exchange reactions.

        Output
        
        The tool generates a CSV file containing:
        - Reaction IDs
        - Knocked out gene(s)
        - Reaction formulas
        - Wildtype flux values
        - Knockout flux values

        Common Issues
        
        - Ensure your model is well-formatted
        - Verify that specified genes exist in the model
        - Large models may require significant computation time, especially for double knockouts
    ]]></help>
    <citations>
        <expand macro="citation_cobrapy"/>
    </citations>
</tool>