changeset 0:ed74ddbf1e80 draft

planemo upload for repository https://github.com/muon-spectroscopy-computational-project/muon-galaxy-tools/main/pm_yaml_config commit d130cf2c46d933fa9d0214ddbd5ddf860f322dc4
author muon-spectroscopy-computational-project
date Thu, 25 Aug 2022 16:20:33 +0000
parents
children 6f271bc31aa8
files pm_yaml_config.xml test-data/config-default.yaml test-data/config.yaml
diffstat 3 files changed, 241 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pm_yaml_config.xml	Thu Aug 25 16:20:33 2022 +0000
@@ -0,0 +1,212 @@
+<tool id="pm_yaml_config" name="PyMuonSuite AIRSS Configure" version="@TOOL_VERSION@+galaxy@WRAPPER_VERSION@" python_template_version="3.5" profile="22.01">
+    <description>define AIRSS parameters</description>
+    <macros>
+        <!-- version of underlying tool (PEP 440) -->
+        <!-- this wrapper doesn't have pymuonsuite as a dependency, but it will change according
+             to the pymuonsuite interface, so follow the same versioning pattern -->
+        <token name="@TOOL_VERSION@">0.2.1</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{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>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+        touch outputx.yaml &&
+        ([[ ! -z "$general_params.poisson_r" ]] && printf "poisson_r: $general_params.poisson_r\n">>outputx.yaml || ( >&2 echo "poisson_r empty" && exit 2)) &&
+        ([[ ! -z "$general_params.struct_name" ]] && printf "name: $general_params.struct_name\n">>outputx.yaml || ( >&2 echo "structure name is empty" && exit 2)) &&
+        ([[ ! -z "$general_params.charged" ]] && printf "charged: $general_params.charged\n">>outputx.yaml || ( >&2 echo "charged muon empty" && exit 2)) &&
+        ([[ ! -z "$general_params.geom_steps" ]] && printf "geom_steps: $general_params.geom_steps\n">>outputx.yaml || ( >&2 echo "geom_steps empty" && exit 2)) &&
+        ([[ ! -z "$general_params.vdw_scale" ]] && printf "vdw_scale: $general_params.vdw_scale\n">>outputx.yaml || ( >&2 echo "vdw_scale empty" && exit 2)) &&
+        ([[ ! -z "$calculator_params.calculator_cond.calculator" ]] && printf "calculator: $calculator_params.calculator_cond.calculator\n">>outputx.yaml || ( >&2 echo "calculator unselected" && exit 2)) &&
+        ([[ ! -z "$general_params.geom_force_tol" ]] && printf "geom_force_tol: $general_params.geom_force_tol\n">>outputx.yaml || ( >&2 echo "geom_force_tol empty" && exit 2)) &&
+        ([[ ! -z "$general_params.out_folder" ]] && printf "out_folder: $general_params.out_folder\n">>outputx.yaml || printf "out_folder: muon-airss-out\n">>outputx.yaml) &&
+        ([[ ! -z "$general_params.random_seed" ]] && printf "random_seed: $general_params.random_seed\n">>outputx.yaml || ( echo "random_seed empty")) &&
+        ([[ ! -z "$clustering_params.supercell" ]] && (printf "supercell: $clustering_params.supercell\n" | sed "s/__ob__/[/g" | sed "s/__cb__/]/g" )>>outputx.yaml || ( >&2 echo "supercell empty" && exit 2)) &&
+        ([[ ! -z "$clustering_params.k_points_grid" ]] && (printf "k_points_grid: $clustering_params.k_points_grid\n" | sed "s/__ob__/[/g" | sed "s/__cb__/]/g" ) >>outputx.yaml || ( >&2 echo "k_points_grid empty" && exit 2)) &&
+        ([[ ! -z "$clustering_params.max_scc_steps" ]] && printf "max_scc_steps: $clustering_params.max_scc_steps\n">>outputx.yaml || ( >&2 echo "max_scc_steps empty")) &&
+        #if str($calculator_params.calculator_cond.calculator)=="uep":
+            ([[ ! -z "$calculator_params.calculator_cond.uep_gw_factor" ]] && printf "uep_gw_factor: $calculator_params.calculator_cond.uep_gw_factor\n">>outputx.yaml || ( >&2 echo "uep gaussian width unset" && exit 2)) &&
+            ([[ ! -z "$calculator_params.calculator_cond.uep_chden" ]] && printf "uep_chden: $calculator_params.calculator_cond.uep_chden.value\n">>outputx.yaml || echo "den_fmt path unset") &&
+        #else if str($calculator_params.calculator_cond.calculator)=="CASTEP":
+            ([[ ! -z "$calculator_params.calculator_cond.castep_command" ]] && printf "castep_command: $calculator_params.calculator_cond.castep_command\n">>outputx.yaml || echo "CASTEP command unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.castep_param" ]] && printf "castep_param: $calculator_params.calculator_cond.castep_param\n">>outputx.yaml || echo "CASTEP param unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.mu_symbol" ]] && printf "mu_symbol: $calculator_params.calculator_cond.mu_symbol\n">>outputx.yaml || echo "mu symbol unset") &&
+        #else if str($calculator_params.calculator_cond.calculator)=="dftb+":
+            ([[ ! -z "$calculator_params.calculator_cond.dftb_set" ]] && printf "dftb_set: $calculator_params.calculator_cond.dftb_set\n">>outputx.yaml || ( >&2 echo "dftb parameter set unselected" && exit 2)) &&
+            ([[ ! -z "$calculator_params.calculator_cond.dftb_pbc" ]] && printf "dftb_pbc: $calculator_params.calculator_cond.dftb_pbc\n">>outputx.yaml || echo "dftb periodic boundary condition unselected") &&
+        #else if str($calculator_params.calculator_cond.calculator)=="all":
+            ([[ ! -z "$calculator_params.calculator_cond.uep_gw_factor" ]] && printf "uep_gw_factor: $calculator_params.calculator_cond.uep_gw_factor\n">>outputx.yaml || echo "uep gaussian width unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.uep_chden" ]] && printf "uep_chden: $calculator_params.calculator_cond.uep_chden\n">>outputx.yaml || echo "den_fmt path unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.castep_command" ]] && printf "castep_command: $calculator_params.calculator_cond.castep_command\n">>outputx.yaml || echo "CASTEP command unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.castep_param" ]] && printf "castep_param: $calculator_params.calculator_cond.castep_param\n">>outputx.yaml || echo "CASTEP param unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.mu_symbol" ]] && printf "mu_symbol: $calculator_params.calculator_cond.mu_symbol\n">>outputx.yaml || echo "mu symbol unset") &&
+            ([[ ! -z "$calculator_params.calculator_cond.mu_symbol" ]] && printf "dftb_set: $calculator_params.calculator_cond.dftb_set\n">>outputx.yaml || echo "dftb parameter set unselected") &&
+            ([[ ! -z "$calculator_params.calculator_cond.dftb_pbc" ]] && printf "dftb_pbc: $calculator_params.calculator_cond.dftb_pbc\n">>outputx.yaml || echo "dftb periodic boundary condition unselected") &&
+        #end if
+        ([[ ! -z "$clustering_params.clustering.clustering_method " ]] && printf "clustering_method: $clustering_params.clustering.clustering_method\n">>outputx.yaml || ( echo "clustering method unselected" && exit 2)) &&
+        #if str($clustering_params.clustering.clustering_method)=="hier":
+            ([[ ! -z "$clustering_params.clustering.clustering_hier_t" ]] && printf "clustering_hier_t: $clustering_params.clustering.clustering_hier_t\n">>outputx.yaml || echo "clustering_hier_t unset") &&
+        #else if str($clustering_params.clustering.clustering_method)=="kmeans":
+            ([[ ! -z "$clustering_params.clustering.clustering_kmeans_k" ]] && printf "clustering_kmeans_k: $clustering_params.clustering.clustering_kmeans_k\n">>outputx.yaml || echo "clustering_kmeans_k unset") &&
+        #end if
+        ln -s outputx.yaml output.yaml
+    ]]></command>
+    <inputs>
+        <section name="general_params" expanded="true" title="General Parameters">
+            <param type="float" name="poisson_r" argument="poisson_r" value="0.8" label="Poisson radius" help=" Poisson sphere radius to use for random generation. No two starting muon positions will be closer than this distance. Smaller values make for bigger structure sets."/>
+            <param type="text" argument="struct_name" name="struct_name" value="struct" label="Name" help="Name of the structure. This name will be postfixed with a unique number, e.g. struct_001 for each generated structure."/>
+            <param type="select" argument="charged" name="charged" label="Charged muon" value="true" help="If true, the muon will be considered charged instead of a muonium with an accompanying electron. Must be true for UEP calculations.">
+                <option value="true">true</option>
+                <option value="false">false</option>
+            </param>
+            <param type="integer" argument="geom_steps" name="geom_steps" value="30" label="Geometry optimization steps" help="Maximum number of geometry optimisation steps."/>
+            <param type="float" argument="vdw_scale" name="vdw_scale" value="0.5" label="Van der Waals scale" help="Van der Waals scaling factor to use when generating muon sites to avoid existing atoms. Smaller values will allow muons to get closer to the other ions."/>
+            <param type="text" argument="out_folder" optional="true" name="out_folder" value="muon-airss-out" label="Output folder name" help="Name to call the output folder used to store the files that the script generates."/>
+            <param type="float" argument="geom_force_tol" name="geom_force_tol" value="0.05" label="Geometry optimization tolerance" help="Tolerance on geometry optimisation in units of eV/Å."/>
+            <param type="integer" argument="random_seed" name="random_seed" label="Random Seed" optional="true" help="Random seed for pymuonsuite."/>
+        </section>
+        <section name="calculator_params" expanded="true" title="Calculator parameters">
+            <conditional name="calculator_cond">
+                <param type="select" display="radio" label="Optimization calculator" argument="calculator" name="calculator" value="uep" help="Calculator to generate structure files for. Must be a single word or a comma seperated list of values. Currently supported calculators are CASTEP, DFTB+ and UEP. Can also select 'all' to generate files for all calculators.">
+                    <option value="uep">UEP</option>
+                    <option value="castep">CASTEP</option>
+                    <option value="dftb+">DFTB+</option>
+                    <option value="all">all</option>
+                </param>
+                <when value="uep">
+                    <param type="float" argument="uep_gw_factor" name="uep_gw_factor" optional="true" value="5.0" label="Gaussian width factor" help="Gaussian width factor for UEP calculation. Higher values will make the potential of atomic nuclei closer to the point-like approximation but may introduce artifacts."/>
+                    <param type="text" argument="uep_chden" name="uep_chden" optional="true" label="Path to .den_fmt and .castep files" help="Name of the .den_fmt file containing the electronic density for an Unperturbed Electrostatic Potential optimisation. The corresponding .castep file must be with the same seedname. Only required for use outside Muon Galaxy"/>
+                </when>
+                <when value="castep">
+                    <param type="text" argument="castep_command" name="castep_command" optional="true" value="castep.serial" label="CASTEP command" help="Command to use to run CASTEP."/>
+                    <param type="text" argument="castep_param" name="castep_param" optional="true" label="PARAM path" help="File path to the CASTEP parameter file."/>
+                    <param type="text" argument="mu_symbol" name="mu_symbol" optional="true" label="Muon symbol" value="H:mu" help="The symbol to use for the muon when writing out the CASTEP custom species."/>
+                </when>
+                <when value="dftb+">
+                    <param type="select" argument="dftb_set" name="dftb_set" optional="true" value="3ob-3-1" label="DFTB parameter set" help="The parameter set to use for DFTB+. Currently supported are: 3ob-3-1 and pbc-0-3. See help section at the bottom of the page for details.">
+                        <option value="3ob-3-1" selected="true">3ob-3-1</option>
+                        <option value="pbc-0-3">pbc-0-3</option>
+                    </param>
+                    <param type="text" argument="dftb_optionals" name="dftb_optionals" value="[]" optional="true" label="DFTB optional files" help="Additional optional json files to activate for DFTBArgs (for example, dftd3.json will use DFTD3 dispersion forces for 3ob-3-1 if DFTB+ has been compiled to support them)."/>
+                    <param type="select" argument="dftb_pbc" name="dftb_pbc" optional="true" value="true" label="Use periodic boundary conditions" help="Whether to turn on periodic boundary conditions in DFTB+.">
+                        <option value="true" selected="true">true</option>
+                        <option value="false">false</option>
+                    </param>
+                </when>
+                <when value="all">
+                    <param type="float" argument="uep_gw_factor" name="uep_gw_factor" optional="true" value="5.0" label="Gaussian width factor" help="Gaussian width factor for UEP calculation. Higher values will make the potential of atomic nuclei closer to the point-like approximation but may introduce artifacts."/>
+                    <param type="text" argument="uep_chden" name="uep_chden" optional="true" label="Path to .den_fmt and CASTEP files" help="Name of the .den_fmt file containing the electronic density for an Unperturbed Electrostatic Potential optimisation. The corresponding .castep file must be with the same seedname. Only required for use outside Muon Galaxy"/>
+                    <param type="text" argument="castep_command" name="castep_command" optional="true" value="castep.serial" label="CASTEP command" help="Command to use to run CASTEP."/>
+                    <param type="text" argument="castep_param" name="castep_param" optional="true" label="PARAM path" help="File path to the CASTEP parameter file."/>
+                    <param type="text" argument="mu_symbol" name="mu_symbol" optional="true" label="Muon symbol" value="H:mu" help="The symbol to use for the muon when writing out the CASTEP custom species."/>
+                    <param type="select" argument="dftb_set" name="dftb_set" optional="true" value="3ob-3-1" label="DFTB parameter set" help="The parameter set to use for DFTB+. Currently supported are: 3ob-3-1 and pbc-0-3. See help section at the bottom of the page for details.">
+                        <option value="3ob-3-1" selected="true">3ob-3-1</option>
+                        <option value="pbc-0-3">pbc-0-3</option>
+                    </param>
+                    <param type="text" argument="dftb_optionals" name="dftb_optionals" value="[]" optional="true" label="DFTB optional files" help="Additional optional json files to activate for DFTBArgs (for example, dftd3.json will use DFTD3 dispersion forces for 3ob-3-1 if DFTB+ has been compiled to support them)."/>
+                    <param type="select" argument="dftb_pbc" name="dftb_pbc" optional="true" value="true" label="Use periodic boundary conditions" help="Whether to turn on periodic boundary conditions in DFTB+.">
+                        <option value="true" selected="true">true</option>
+                        <option value="false">false</option>
+                    </param>
+                </when>
+            </conditional>
+        </section>
+        <section name="clustering_params" expanded="true" title="Clustering Parameters">
+            <conditional name="clustering">
+                <param type="select" argument="clustering_method" name="clustering_method" label="Clustering method" value="hier">
+                    <option value="hier">hierarchical</option>
+                    <option value="kmeans">k-means</option>
+                </param>
+                <when value="hier">
+                    <param type="float" argument="clustering_hier_t" name="clustering_hier_t" value="0.3" optional="true" label="t parameter for hierarchical clustering"/>
+                </when>
+                <when value="kmeans">
+                    <param type="integer" argument="clustering_kmeans_k" name="clustering_kmeans_k" value="4" optional="true" label="Number of clusters for k-means clustering"/>
+                </when>
+            </conditional>
+            <param type="integer" argument="supercell" name="supercell" value="1" label="Supercell" multiple="true" help="Supercell size and shape to use. This can either be a single int, a list of three integers or a 3x3 matrix of integers. For a single number a diagonal matrix will be generated with the integer repeated on the diagonals. For a list of three numbers a diagonal matrix will be generated where the diagonal elements are set to the list. A matrix will be used directly as is. Default is a 3x3 identity matrix."/>
+            <param type="text" argument="k_points_grid" name="k_points_grid" value="[1,1,1]" label="K-points grid" multiple="true" help="List of three integer k-points. Default is [1,1,1]."/>
+            <param type="integer" argument="max_scc_steps" name="max_scc_steps" value="200" optional="true" label="Max SCC steps" help="If applicable, max number of SCC steps to perform before giving up. Default is 200 for DFTB+ and 30 for CASTEP."/>
+        </section>
+    </inputs>
+    <outputs>
+        <data label="Configuration for $general_params.struct_name" name="out_yaml" format="yaml" from_work_dir="output.yaml"/>
+    </outputs>
+    <tests>
+        <test>
+            <section name="general_params">
+                <param name="poisson_r" value="0.8"/>
+                <param name="struct_name" value="Si"/>
+                <param name="charged" value="true"/>
+                <param name="geom_steps" value="300"/>
+                <param name="vwd_scale" value="0.25"/>
+                <param name="out_folder" value="Si-out"/>
+                <param name="geom_force_tol" value="0.05"/>
+            </section>
+            <section name="calculator_params">
+                <conditional name="calculator_cond">
+                    <param name="calculator" value="uep"/>
+                    <param name="uep_gw_factor" value="0.4"/>
+                    <param name="uep_chden" value="test.den_fmt"/>
+                </conditional>
+            </section>
+            <section name="clustering_params">
+                <conditional name="clustering">
+                    <param name="clustering_method" value="hier"/>
+                    <param name="clustering_hier_t" value="0.2"/>
+                </conditional>
+                <param name="supercell" value="1"/>
+                <param name="k_points_grid" value="[1,1,1]"/>
+                <param name="max_scc_steps" value="200"/>
+            </section>
+            <output name="out_yaml" file="config.yaml" ftype="yaml" delta="100"/>
+        </test>
+        <test>
+            <section name="general_params">
+            </section>
+            <section name="calculator_params">
+            </section>
+            <section name="clustering_params">
+            </section>
+            <output name="out_yaml" file="config-default.yaml" ftype="yaml" delta="100"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+        Creates a YAML configuration file from input parameters.
+
+      **DFTB+ parameter sets:**
+
+    +------------+-------------------------------------+-----------------------------------+
+    | set        |                elements             |       context                     |
+    +============+=====================================+===================================+
+    |  3ob-3-1   | Br-C-Ca-Cl-F-H-I-K-Mg-N-Na-O-P-S-Zn | DFTB3 files for bio and organic   |
+    |            |                                     | molecules                         |
+    +------------+-------------------------------------+-----------------------------------+
+    |  pbc-0-3   | Si - F - O - N - C - H / Fe         | SCC files for solids and surfaces |
+    +------------+-------------------------------------+-----------------------------------+
+    ]]></help>
+    <citations>
+        <citation type="bibtex">
+            @TOOL_CITATION@
+        </citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/config-default.yaml	Thu Aug 25 16:20:33 2022 +0000
@@ -0,0 +1,14 @@
+poisson_r: 0.8
+name: struct
+charged: true
+geom_steps: 30
+vdw_scale: 0.5
+calculator: uep
+geom_force_tol: 0.05
+out_folder: muon-airss-out
+supercell: 1
+k_points_grid: [1,1,1]
+max_scc_steps: 200
+uep_gw_factor: 5.0
+clustering_method: hier
+clustering_hier_t: 0.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/config.yaml	Thu Aug 25 16:20:33 2022 +0000
@@ -0,0 +1,15 @@
+poisson_r: 0.8
+name: Si
+charged: true
+geom_steps: 300
+vdw_scale: 0.5
+calculator: uep
+geom_force_tol: 0.05
+out_folder: Si-out
+supercell: 1
+k_points_grid: [1,1,1]
+max_scc_steps: 200
+uep_gw_factor: 0.4
+uep_chden: test.den_fmt
+clustering_method: hier
+clustering_hier_t: 0.2