view pm_asephonons.xml @ 1:641fda3dfb62 draft

planemo upload for repository https://github.com/muon-spectroscopy-computational-project/muon-galaxy-tools/main/pm_asephonons commit 6a07c4caed5ef35f35198d54ebafd7d1d6d60edb
author muon-spectroscopy-computational-project
date Thu, 15 Sep 2022 10:24:36 +0000
parents 4bc5e66259ca
children dd3ca8457fcd
line wrap: on
line source

<tool id="pm_asephonons" name="PyMuonSuite Phonons" version="0.1.1" python_template_version="3.5" profile="22.01">
    <description>calculate phonons using ASE and DFTB+</description>
    <macros>
        <!-- citation should be updated with every underlying tool version -->
        <!-- typical fields to update are version, month, year, and doi -->
        <token name="@PYMUONSUITE_CITATION@">
            @software{pymuon-suite,
                author = {Sturniolo, Simone and Liborio, Leandro and Chadwick, Eli and Murgatroyd, Laura and Laverack, Adam and {Muon Spectroscopy Computational Project}},
                license = {GPL-3.0},
                title = {{pymuon-suite}},
                url = {https://github.com/muon-spectroscopy-computational-project/pymuon-suite},
                version = {v0.2.1},
                month = {2},
                year = {2022},
                doi = {}
            }
        </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>
        <!-- note versioning is different due to multiple dependencies -->
        <requirement type="package" version="0.2.1">pymuonsuite</requirement>
        <requirement type="package" version="21.2">dftbplus</requirement>
        <requirement type="package" version="1.22.4">numpy</requirement> <!-- pinned due to numpy/ASE/DFTB+ incompatibility https://github.com/dftbplus/dftbplus/issues/1064 -->
        <requirement type="package" version="3.0">zip</requirement>
    </requirements>
    <command detect_errors="exit_code"><![CDATA[
        structure_name_internal="input_structure.$structure.ext" &&
        touch pho_params.yaml &&
        ([[ ! -z "$name" ]] && printf "name: $name \n">>pho_params.yaml || ( >&2 echo "name empty" && exit 2)) &&
        ([[ ! -z "$phonon_kpoint_grid" ]] && ( printf "phonon_kpoint_grid: $phonon_kpoint_grid \n" | sed "s/__ob__/[/g" | sed "s/__cb__/]/g" )>>pho_params.yaml || ( >&2 echo "phonon_kpoint_grid empty" && exit 2)) &&
        ([[ ! -z "$kpoint_grid" ]] && ( printf "kpoint_grid: $kpoint_grid \n" | sed "s/__ob__/[/g" | sed "s/__cb__/]/g" )>>pho_params.yaml || ( >&2 echo "kpoint_grid empty" && exit 2)) &&
        ([[ ! -z "$force_tol" ]] && printf "force_tol: $force_tol \n">>pho_params.yaml || ( >&2 echo "force_tol empty" && exit 2)) &&
        ([[ ! -z "$dftb_set" ]] && printf "dftb_set: $dftb_set \n">>pho_params.yaml || ( >&2 echo "dftb_set empty" && exit 2)) &&
        ([[ ! -z "$pbc" ]] && printf "pbc: $pbc \n">>pho_params.yaml || ( >&2 echo "pbc empty" && exit 2)) &&
        printf "force_clean: false \n">>pho_params.yaml &&
        ln -s $structure \$structure_name_internal &&
        cat pho_params.yaml &&
        pm-asephonons \$structure_name_internal pho_params.yaml ; err=\$? &&
        echo "Asephonons output:" &&
        cat asephonons.out &&
        if [ \$err != 0 ] ; then echo "errored" && exit 24 ; fi &&
        ln -s "${name}_phonons.txt" phonon_report.txt &&
        zip -r out_zip.zip $name "${name}_phonons.txt" asephonons.out band.out pho_params.yaml
    ]]></command>
    <inputs>
        <param type="data" name="structure" label="Structure file" format="cell" help="The structure to generate the phonon report from. Accepted file types: cell."/>
        <param type="text" name="name" label="Structure name" help="Name of the structure." value="struct"/>
        <param type="text" name="phonon_kpoint_grid" label="Phonon k-points" value="[1, 1, 1]"/>
        <param type="text" name="kpoint_grid" label="K-points used for DFTB+ calculation" value="[1, 1, 1]"/>
        <param type="float" name="force_tol" label="Force tolerance for optimisation" value="0.01"/>
        <param type="select" name="dftb_set" label="DFTB set to use" value="3ob-3-1">
            <option value="3ob-3-1">3ob-3-1</option>
            <option value="pbc-0-3">pbc-0-3</option>
        </param>
        <param type="boolean" name="pbc" label="Use periodic boundary conditions" help="Whether to turn on periodic boundary conditions in DFTB+." value="true"/>
    </inputs>
    <outputs>
        <data label="phonons outputs of $structure.name" name="phonon_outputs" format="zip" from_work_dir="out_zip.zip"/>
        <data label="phonon report for $structure.name" name="phonon_report" format="txt" from_work_dir="phonon_report.txt"/>
    </outputs>
    <tests>
        <test expect_num_outputs="2">
            <param name="structure" value="Si.cell" ftype="cell"/>
            <param name="name" value="Si"/>
            <param name="dftb_set" value="pbc-0-3"/>
            <output name="phonon_report" file="test_out.txt" ftype="txt" compare="re_match">
                <assert_contents>
                    <has_size value="8155" delta="20"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="2">
            <param name="structure" value="Si.cif" ftype="cif"/>
            <param name="name" value="Si"/>
            <param name="dftb_set" value="pbc-0-3"/>
            <output name="phonon_report" file="test_out.txt" ftype="txt" compare="re_match">
                <assert_contents>
                    <has_size value="8155" delta="20"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="2">
            <param name="structure" value="Si.xyz" ftype="xyz"/>
            <param name="name" value="Si"/>
            <param name="dftb_set" value="pbc-0-3"/>
            <output name="phonon_report" file="test_out.txt" ftype="txt" compare="re_match">
                <assert_contents>
                    <has_size value="8155" delta="20"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="2">
            <param name="structure" value="Si.extxyz" ftype="extxyz"/>
            <param name="name" value="Si"/>
            <param name="dftb_set" value="pbc-0-3"/>
            <output name="phonon_report" file="test_out.txt" ftype="txt" compare="re_match">
                <assert_contents>
                    <has_size value="8155" delta="20"/>
                </assert_contents>
            </output>
        </test>
    </tests>
    <help><![CDATA[
        usage: pm-asephonons structure params

        Given an input structure, this tool generates a phonon report for that structure using the parameters provided.

    ]]></help>
    <citations>
        <citation type="bibtex">
            @PYMUONSUITE_CITATION@
        </citation>
        <citation type="bibtex">
            @article{doi:10.1063/1.5085197,
                author = {Sturniolo,Simone  and Liborio,Leandro  and Jackson,Samuel },
                title = {Comparison between density functional theory and density functional tight binding approaches for finding the muon stopping site in organic molecular crystals},
                journal = {The Journal of Chemical Physics},
                volume = {150},
                number = {15},
                pages = {154301},
                year = {2019},
                doi = {10.1063/1.5085197},
                URL = {
                        https://doi.org/10.1063/1.5085197
                },
                eprint = {
                        https://doi.org/10.1063/1.5085197
                }
            }
        </citation>
        <citation type="bibtex">
            @article{larsen2017atomic,
                title={The atomic simulation environment—a Python library for working with atoms},
                author={Larsen, Ask Hjorth and Mortensen, Jens J{\o}rgen and Blomqvist, Jakob and Castelli, Ivano E and Christensen, Rune and Du{\l}ak, Marcin and Friis, Jesper and Groves, Michael N and Hammer, Bj{\o}rk and Hargus, Cory and others},
                journal={Journal of Physics: Condensed Matter},
                volume={29},
                number={27},
                pages={273002},
                year={2017},
                publisher={IOP Publishing}
            }
        </citation>
    </citations>
</tool>