view pm_uep_opt.xml @ 3:523d44fcd03f draft

planemo upload for repository https://github.com/muon-spectroscopy-computational-project/muon-galaxy-tools/main/pm_uep_opt commit 4f06b404d8b7fb83995f3052faa7e2ec7811f507
author muon-spectroscopy-computational-project
date Fri, 03 Feb 2023 15:40:08 +0000
parents 8f41a71fc710
children ec5f6b22417c
line wrap: on
line source

<tool id="pm_uep_opt" name="PyMuonSuite AIRSS UEP Optimise" version="@TOOL_VERSION@+galaxy@WRAPPER_VERSION@" python_template_version="3.5" profile="22.05" license="MIT">
    <description>run UEP optimisation</description>
    <macros>
        <!-- version of underlying tool (PEP 440) -->
        <token name="@TOOL_VERSION@">0.2.3</token>
        <!-- version of this tool wrapper (integer) -->
        <token name="@WRAPPER_VERSION@">0</token>
        <!-- citation should be updated with every underlying tool version -->
        <!-- typical fields to update are version, month, year, and doi -->
        <token name="@TOOL_CITATION@">
            @software{Sturniolo_pymuon-suite_2022,
                author = {Sturniolo, Simone and Liborio, Leandro and Chadwick, Eli and Murgatroyd, Laura and Laverack, Adam and Mudaraddi, Anish and {Muon Spectroscopy Computational Project}},
                license = {GPL-3.0},
                month = {8},
                title = {{pymuon-suite}},
                url = {https://github.com/muon-spectroscopy-computational-project/pymuon-suite},
                version = {v0.2.3},
                doi = {10.5281/zenodo.7025644},
                year = {2022}
            }
        </token>
    </macros>
    <creator>
        <person givenName="Jyothish" familyName="Thomas" identifier="https://orcid.org/0000-0003-4724-6924"/>
        <person givenName="Eli" familyName="Chadwick" url="https://github.com/elichad" identifier="https://orcid.org/0000-0002-0035-6475"/>
        <organization url="https://muon-spectroscopy-computational-project.github.io/index.html" name="The Muon Spectroscopy Computational Project"/>
    </creator>
    <requirements>
        <requirement type="package" version="@TOOL_VERSION@">pymuonsuite</requirement>
        <requirement type="package" version="3.0">zip</requirement>
    </requirements>
    <required_files>
        <include type="literal" path="run.sh"/>
        <include type="literal" path="get_out_folder.py"/>
    </required_files>
    <command detect_errors="exit_code"><![CDATA[
        unzip '$muonated_structures' &&
        if test -f "params.yaml"; then echo "params.yaml present"; else echo "params.yaml missing" && exit 64; fi &&
        if ( test -f input_structure.* ) ; then echo "input structure present"; else echo "input structure missing" && exit 64; fi &&
        ## PyMuonSuite will attempt to load '<chden_seed>.den_fmt' and
        ## '<chden_seed>.castep', but $charge_density.name may or may not end
        ## with '.den_fmt' so strip any extension and manually include 'den_fmt'
        ## and '.castep' in the linked file names
        charge_density_name=\$(sed 's/ //g' <<< '$charge_density.name') &&
        charge_density_seed=\${charge_density_name%%.*} &&
        echo "Calculated seed name \$charge_density_seed" &&
        ln -s '$charge_density' \$charge_density_seed.den_fmt && 
        ln -s '$castep_log' \$charge_density_seed.castep &&
        out_folder="`python '${__tool_directory__}/get_out_folder.py'`" &&
        find \$out_folder -type f -name "*.yaml" | xargs sed -i "s#^chden_path: .*#chden_path: .\/#g" &&
        find \$out_folder -type f -name "*.yaml" | xargs sed -i "s#^chden_seed: .*#chden_seed: \$charge_density_seed#g" &&
        bash '${__tool_directory__}/run.sh' \$out_folder &&
        zip -r out_zip.zip \$out_folder params.yaml input_structure.* &&
        find \$out_folder > tree.txt
    ]]></command>
    <inputs>
        <param type="data" name="muonated_structures" label="Muonated structures (.zip)" format="zip" help="A zip folder containing muonated structures, as generated by the 'Generate muonated structures' tool or pm-muairss."/>
        <param type="data" name="charge_density" label="Charge density file (.den_fmt)" format="den_fmt" help="The charge density file created by CASTEP during your initial DFT simulation for the structure."/>
        <param type="data" name="castep_log" label="CASTEP log (.castep)" format="castep" help="The CASTEP log for your initial DFT simulation for the structure."/>
        <param type="hidden" name="testing" label="Test mode" value="false"/>
    </inputs>
    <outputs>
        <data label="UEP results for $muonated_structures.name" name="uep_results" format="zip" from_work_dir="out_zip.zip"/>
        <data label="File tree (testing only)" name="file_tree" format="txt" from_work_dir="tree.txt" hidden="true">
            <filter>(testing == "true")</filter>
        </data>
    </outputs>
    <tests>
        <test expect_num_outputs="2">
            <param name="testing" value="true"/>
            <param name="muonated_structures" value="muonated.zip" ftype="zip"/>
            <param name="charge_density" value="Si.den_fmt" ftype="den_fmt"/>
            <param name="castep_log" value="Si.castep" ftype="castep"/>
            <output name="file_tree" file="tree.txt" ftype="txt" sort="true">
                <assert_contents>
                    <has_size value="1780"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="2">
            <param name="testing" value="true"/>
            <param name="muonated_structures" value="muonated-default-folder.zip" ftype="zip"/>
            <param name="charge_density" value="Si.den_fmt" ftype="den_fmt"/>
            <param name="castep_log" value="Si.castep" ftype="castep"/>
            <output name="file_tree" file="tree-default-folder.txt" sort="true"/>
        </test>
        <test expect_failure="true">
            <param name="testing" value="true"/>
            <param name="muonated_structures" value="muonated-default-folder.zip" ftype="zip"/>
            <param name="castep_log" value="Si.castep" ftype="castep"/>
            <param name="charge_density" value="Sifail.den_fmt" ftype="den_fmt"/>
            <assert_stderr>
                <has_text text="Error:  FMT file has no header"/>
            </assert_stderr>
        </test>
        <!-- check that file_tree filter works -->
        <test expect_num_outputs="1">
            <param name="testing" value="false"/>
            <param name="muonated_structures" value="muonated.zip" ftype="zip"/>
            <param name="charge_density" value="Si.den_fmt" ftype="den_fmt"/>
            <param name="castep_log" value="Si.castep" ftype="castep"/>
        </test>
        <!-- Check that the chden parameters are set correctly when $charge_density.name does not have the .den_fmt extension -->
        <test expect_num_outputs="2">
            <param name="testing" value="true"/>
            <param name="muonated_structures" value="muonated.zip" ftype="zip"/>
            <param name="charge_density" value="Si_den_fmt" ftype="den_fmt"/>
            <param name="castep_log" value="Si.castep" ftype="castep"/>
            <output name="file_tree" file="tree.txt" ftype="txt" sort="true">
                <assert_contents>
                    <has_size value="1780"/>
                </assert_contents>
            </output>
        </test>
    </tests>
    <help><![CDATA[
        Given a set of input muonated structures (structures containing a muon), applies UEP optimisation to refine them.

        This tool requires CASTEP inputs for the UEP method, meaning your initial DFT simulation must have been done with CASTEP.
        The structure you used as input to the '`Generate muonated structures`_' tool or pm-muairss beforehand should come from the same simulation run.

        Command-line usage: pm-uep-opt [-h] [-t {r,w}] structures parameter_file

        .. _Generate muonated structures: /tool_runner?tool_id=pm_muairss_write

        PyMuonSuite is distributed under the GPLv3 license. This tool wrapper is distributed under the MIT license.
    ]]></help>
    <citations>
        <citation type="bibtex">
            @TOOL_CITATION@
        </citation>
        <citation type="doi">10.1063/1.5024450</citation>
        <citation type="doi">10.1063/1.5085197</citation>
        <citation type="doi">10.1063/5.0012381</citation>
        <citation type="bibtex">
            @article {castep,
                author = {Clark, S. J. and Segall, M. D. and Pickard, C. J. and Hasnip, P. J. and Probert, M. I. J. and Refson, K. and Payne, M. C.},
                title = {First principles methods using CASTEP},
                journal = {Zeitschrift fuer Kristallographie},
                volume = {220},
                pages = {567},
                year = {2005}
            }
        </citation>
    </citations>
</tool>