view packmol.xml @ 1:ddb1ae2cf028 draft

"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem commit b1b74e91a242f2de250761a79b17d77e68b1045f"
author chemteam
date Fri, 30 Aug 2019 15:02:54 -0400
parents 0b8a0ce446f5
children 539fb45630e6
line wrap: on
line source

<tool id="packmol" name="PACKMOL" version="18.169">
    <description>Initial configurations for Molecular Dynamics simulations by packing optimization</description>
    <macros>
        <import>macros_packmol.xml</import>
    </macros>
    <requirements>
        <requirement type="package" version="18.169">packmol</requirement>
    </requirements>
    <command detect_errors="exit_code">
        <![CDATA[
        python '$packmol_script' '$inputs' &&
        packmol < '$parameteroutfile'
        ]]>
    </command>
    <configfiles>
        <inputs name="inputs" />
        <configfile name="packmol_script"><![CDATA[

import os
import sys
import json

from jinja2 import Environment, FileSystemLoader

input_json_path = sys.argv[1]
params = json.load(open(input_json_path, "r"))

# get the inputs
input_iter = []
#for $i, $s in enumerate( $packmol_format.packmol_inputs )
pmfile_index = $i
pmfile_path = "${s.input.file_name}"
input_iter.append(pmfile_path)
params["packmol_format"]["packmol_inputs"][pmfile_index]["file"] = pmfile_path
params["packmol_format"]["packmol_inputs"][pmfile_index]["datasetname"] = "${s.input.name}"
#end for

params["outfile"] = "$outfile"

currentpath = "$__tool_directory__"  # should work generally
template_environment = Environment(loader=FileSystemLoader(currentpath),lstrip_blocks=True, trim_blocks=True)
template = template_environment.get_template('template.j2')
print(params)

with open("$parameteroutfile",'w+') as f:
    f.write(template.render(params))

]]>
        </configfile>
    </configfiles>
    <inputs>
        <conditional name="packmol_format">
            <param name="selected_format" type="select" label="Select a file format:">
                <option value="pdb" selected="true">pdb</option>
                <!--option value="xyz">xyz</option>
                <option value="tinker">tinker</option>
                <option value="moldy">moldy</option-->
            </param>
            <when value="pdb">
                <expand macro="multiple_input" name="packmol_inputs" format="pdb" label="pdb input with molecule type" help_text="Select a pdb file in .pdb format"/>
            </when>
            <!--when value="xyz">
                <expand macro="multiple_input" name="packmol_inputs" format="xyz" label="xyz input with molecule type" help_text="Select a xyz file in .xyz format"/>
            </when>
            <when value="tinker">
                <expand macro="multiple_input" name="packmol_inputs" format="tinker" label="tinker input with molecule type" help_text="Select a tinker file in .tinker format"/>
            </when>
            <when value="moldy">
                <expand macro="multiple_input" name="packmol_inputs" format="moldy" label="moldy input with molecule type" help_text="Select a moldy file in .moldy format"/>
            </when-->
        </conditional>
        <section name="allparams" title="General Parameters" expanded="false">
            <param name="tolerance" type="float" value="2.0" label="distance tolerance" min="0.0" max="100.0"/>
            <param name="nloop" type="integer" value="20" label="maximum number of optimisation loops" min="1" max="10000"/>
            <param name="maxit" type="integer" value="20" label="maximum number of gencan iterations per loop" min="1" max="10000"/>
            <param name="seed" type="integer" value="-1" label="random number generator seed, default of -1 used the computer time to set the seed" />
        </section>
    </inputs>
    <outputs>
        <data format="pdb" name="outfile" label="${tool.name}: structure output">
        <change_format>
            <when input="selected_format" value="pdb" format="pdb"/>
            <!-- <when input="selected_format" value="xyz" format="xyz"/>
            <when input="selected_format" value="tinker" format="tinker"/>
            <when input="selected_format" value="moldy" format="moldy"/> -->
        </change_format>
        </data>
        <data format="txt" name="parameteroutfile" label="${tool.name}: parameter output"/>
    </outputs>
    <tests>
        <test>
            <param name="selected_format" value="pdb"/>
            <param name="packmol_inputs_0|input" value="water.pdb" ftype="pdb"/>
            <param name="allparams.seed" value="101"/>
            <output name="outfile" file="packmol_outfile1.pdb" compare="sim_size" delta="100000">
                <assert_contents>
                    <has_text text="HETATM  300  O   HOH"/>
                </assert_contents>
            </output>
            <output name="parameteroutfile" file="packmol_parameteroutfile_1.txt" compare="diff" lines_diff="6"/>
        </test>
        <test>
            <param name="selected_format" value="pdb"/>
            <param name="packmol_inputs_0|input" value="water.pdb" ftype="pdb"/>
            <param name="packmol_inputs_1|input" value="urea.pdb" ftype="pdb"/>
            <param name="packmol_inputs_0|structureparams|number" value="1000"/>
            <param name="packmol_inputs_1|structureparams|number" value="400"/>
            <param name="packmol_inputs_0|structureparams|constraints_repeat_0|constraints|constraint" value="box"/>
            <param name="packmol_inputs_0|structureparams|constraints_repeat_0|constraints|xmax" value="40.0"/>
            <param name="packmol_inputs_0|structureparams|constraints_repeat_0|constraints|ymax" value="40.0"/>
            <param name="packmol_inputs_0|structureparams|constraints_repeat_0|constraints|zmax" value="40.0"/>
            <param name="packmol_inputs_1|structureparams|constraints_repeat_0|constraints|constraint" value="box"/>
            <param name="packmol_inputs_1|structureparams|constraints_repeat_0|constraints|xmax" value="40.0"/>
            <param name="packmol_inputs_1|structureparams|constraints_repeat_0|constraints|ymax" value="40.0"/>
            <param name="packmol_inputs_1|structureparams|constraints_repeat_0|constraints|zmax" value="40.0"/>
            <param name="allparams.seed" value="-1"/>
            <output name="outfile" file="packmol_outfile2.pdb" compare="sim_size" delta="100000">
                <assert_contents>
                    <has_text text="HETATM 3000  O   HOH"/>
                    <has_text text="HETATM 6200  H     2 B"/>
                </assert_contents>
            </output>
            <output name="parameteroutfile" file="packmol_parameteroutfile_2.txt" compare="diff" lines_diff="6"/>
        </test>
    </tests>
    <help><![CDATA[
.. class:: infomark

**What it does**

Packmol creates initial MD configurations from input molecules. For example, create a water and urea mixture.

.. class:: infomark

**How it works**

- Select a molecule file type e.g. pdb,xyz
- Select single molecule from your history (can select multiple)
- For each molecule:
   - choose how many molecules to create (number variable)
   - optionally choose:
       - molecular radius
       - how to number the molecules (resnumber variable)
   - choose one or more placement constraint(s). Each constraint has different parameters:
       - for example, specify placement inside a cube of size 40 Angstroms placed at the origin
       - all units are in Angstroms for distances and degrees for angles

.. class:: infomark

**Outputs created**

- A pdb file, view this in Galaxy by clicking on visualise and choosing a viewer. The NGLViewer works well for small molecules.
- A packmol input script (for debugging and repeatability)

.. class:: infomark

**User guide and documentation**

- Packmol `userguide`_
- Calculating the number of molecules using the `volume guesser`_

.. class:: infomark

**Known issues**

- fixed constraint only allows 1 atom but this is not set for the user. user has to set this. Job may fail.

.. _`userguide`: http://m3g.iqm.unicamp.br/packmol/userguide.shtml#more
.. _`volume guesser`: http://m3g.iqm.unicamp.br/packmol/utilities.shtml

]]>
    </help>
    <citations>
        <citation type="doi">10.1002/jcc.21224</citation>
    </citations>
</tool>