view mudata_import_export.xml @ 4:aa9162c059b3 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/muon commit fef10e0d450018d1e6ba4cbbda76c7686edc8aae
author iuc
date Sat, 25 Oct 2025 21:00:59 +0000
parents 089a6101d5d9
children
line wrap: on
line source

<tool id="mudata_import_export" name="MuData import and export" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="bio_tools"/>
    <expand macro="requirements"/>
    <expand macro="version_command"/>
    <command detect_errors="exit_code"><![CDATA[
@CMD@
    ]]></command>
    <configfiles>
        <configfile name="script_file"><![CDATA[
@CMD_imports@
#if $operation.mode == 'import'
import anndata as ad

mdata = mu.MuData({
    #for $modality in $operation.modalities
        '$modality.name': ad.read_h5ad('$modality.anndata'),
    #end for
    })
    #if $make_unique
mdata.var_names_make_unique()
    #end if
mdata.write_h5mu('mudata.h5mu')

#else if $operation.mode == 'export'
mdata = mu.read_h5mu('$operation.mudata_in')
for mod in mdata.mod:
    mdata[mod].write_h5ad(mod + '.h5ad')

#end if

]]></configfile>
    </configfiles>
    <inputs>
        <conditional name="operation">
            <param name="mode" type="select" label="Mode of operation">
                <option value="import" selected="true">Import multiple Anndata objects into a MuData object</option>
                <option value="export">Export Anndata objects from a MuData objects</option>
            </param>
            <when value="import">
                <repeat name="modalities" title="Modalities" min="2" default="2">
                    <param name="name" type="text" label="Modality name" value=""
                        help="Name to give for the modality in the MuData object">
                        <expand macro="sanitize_string" />
                    </param>
                    <param name="anndata" type="data" format="h5ad" label="Anndata object for the modality"/>
                </repeat>
                <param name="make_unique" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Make variable names unique?"/>
            </when>
            <when value="export">
                <param name="mudata_in" type="data" format="h5ad" label="Multimodal MuData object"/>
            </when>
        </conditional>
        <expand macro="inputs_common_advanced" />
    </inputs>
    <outputs>
        <data name="mudata_out" format="h5ad" from_work_dir="mudata.h5mu" label="MuData object built from ${on_string}">
            <filter>operation['mode'] == 'import' </filter>
        </data>
        <collection name="collection_anndata" type="list" label="Anndata objects extracted from ${on_string}">
            <discover_datasets pattern="(?P&lt;designation&gt;.*).h5ad" format="h5ad"/>
            <filter>operation['mode'] == 'export' </filter>
        </collection>
        <expand macro="outputs_common_advanced"/>
    </outputs>
    <tests>
        <test expect_num_outputs="2">
            <!--Import test for RNA and ATAC modalities-->
            <conditional name="operation">
                <param name="mode" value="import"/>
                <repeat name="modalities">
                    <param name="name" value="RNA"/>
                    <param name="anndata" location="https://zenodo.org/records/12570984/files/rna.h5ad"/>
                </repeat>
                <repeat name="modalities">
                    <param name="name" value="ATAC"/>
                    <param name="anndata" location="https://zenodo.org/records/12570984/files/atac.h5ad"/>
                </repeat>
                <param name="make_unique" value="True"/>
            </conditional>
            <section name="advanced_common">
                <param name="show_log" value="true" />
            </section>
            <output name="hidden_output">
                <assert_contents>
                    <has_text_matching expression="mu.MuData"/>
                    <has_text_matching expression="'RNA': ad.read"/>
                    <has_text_matching expression="'ATAC': ad.read"/>
                    <has_text_matching expression="var_names_make_unique()"/>
                </assert_contents>
            </output>
            <output name="mudata_out" ftype="h5ad">
                <assert_contents>
                    <has_h5_keys keys="mod/RNA"/>
                    <has_h5_keys keys="mod/ATAC"/>
                    <has_h5_keys keys="var/feature_types"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="2">
            <!--Export test for RNA and ATAC modalities-->
            <conditional name="operation">
                <param name="mode" value="export"/>
                <param name="mudata_in" location="https://zenodo.org/records/12570984/files/rna_atac.h5mu"/>
            </conditional>
            <section name="advanced_common">
                <param name="show_log" value="true" />
            </section>
            <output name="hidden_output">
                <assert_contents>
                    <has_text_matching expression="mu.read_h5mu"/>
                    <has_text_matching expression="write_h5ad"/>
                </assert_contents>
            </output>
            <output_collection name="collection_anndata" type="list" count="2">
                <element name="ATAC" ftype="h5ad">
                    <assert_contents>
                        <has_h5_keys keys="var/gene_ids"/>
                        <has_h5_keys keys="uns/neighbors"/>
                        <has_h5_keys keys="obsp/connectivities"/>
                    </assert_contents>
                </element>
                <element name="RNA" ftype="h5ad">
                    <assert_contents>
                        <has_h5_keys keys="var/gene_ids"/>
                        <has_h5_keys keys="uns/neighbors"/>
                        <has_h5_keys keys="obsp/connectivities"/>
                    </assert_contents>
                </element>
            </output_collection>
        </test>
    </tests>
    <help><![CDATA[
    **What it does**
        Create MuData from AnnData is a tool that allows creating a muon.MuData object out of two or more AnnData objects
        for multimodal analysis. The multimodal data is created by combining AnnData objects as
        h5ad files into a MuData object as a h5mu file using muon.
        Furthermore, it runs pp.intersect_obs to keep only entries present in both modalities (AnnData objects) in the
        final MuData file.
    ]]></help>
    <expand macro="citations"/>
</tool>