view traj_select_and_merge.xml @ 0:f4a1e92ca3d2 draft

"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit 7d8024bb5f0c425b5a2b37e389802ac250b73c60"
author chemteam
date Thu, 11 Mar 2021 19:54:32 +0000
parents
children 8740338fdff4
line wrap: on
line source

<tool id="traj_selections_and_merge" name="Trajectory select and merge" version="@TOOL_VERSION@+galaxy@GALAXY_VERSION@">
    <description>- select specific molecules and merge multiple trajectories.</description>
    <macros>
        <import>macros.xml</import>
        <token name="@GALAXY_VERSION@">0</token>
    </macros>
    <expand macro="requirements" />
    <command detect_errors="exit_code"><![CDATA[
    ln -s '$strin' str.${strin.ext} &&
    #for $trj in $trajs:
        ln -s '$trj' `basename '$trj'`.${select.traj_fmt} &&
    #end for
    python '$mdtraj_script'
        --istr str.${strin.ext}
        --itraj *.${select.traj_fmt}
        --isele '$selection'
        --o_str output.${strin.ext} 
        --o_trj output.${select.traj_fmt} &&
    mv output.${strin.ext} '$outputstr' &&
    mv output.${select.traj_fmt} '$outputtraj'
]]></command>
    <configfiles>
        <configfile name="mdtraj_script"><![CDATA[
import mdtraj as md
import sys
import argparse

def parse_command_line(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('--istr', help='input str')
    parser.add_argument('--itraj', nargs='+', help='input traj')
    parser.add_argument('--isele', help='selection')
    parser.add_argument('--o_str', help='MDA Ramachandran plot')
    parser.add_argument('--o_trj', help='Seaborn Ramachandran plot')
    return parser.parse_args()

args = parse_command_line(sys.argv)
list_of_traj = []
if args.itraj is not None:
    list_of_traj.extend(args.itraj)

try:
    traj = md.load(list_of_traj, top=args.istr)
except Exception as einstance:
    print(type(einstance))
    print(einstance.args)
    print(einstance)
topology = traj.topology
try:
    atoms_to_keep = topology.select(str(args.isele))
except Exception as einstance:
    print("Error: Check the selection is valid for the dataset chosen")
    print(type(einstance))
    print(einstance.args)
    print(einstance)
traj.restrict_atoms(atoms_to_keep)
newstruct = traj.slice(1)
newstruct.save(args.o_str)
traj.save(args.o_trj)
]]></configfile>
    </configfiles>
    <inputs>
        <param format="pdb,gro" name="strin" type="data" label="PDB/GRO input" />
        <conditional name="select">
            <param name="traj_fmt" type="select" label="Trajectory format" help="Select the trajectory format to filter by">
                <option selected="True" value="dcd">dcd</option>
                <option value="xtc">xtc</option>
                <option value="netcdf">netcdf</option>
                <option value="trr">trr</option>
            </param>
            <when value="dcd">
                <param name="trajs" multiple="True" type="data" format="dcd" label="trajectory file(s) input" />
            </when>
            <when value="xtc">
                <param name="trajs" multiple="True" type="data" format="xtc" label="trajectory file(s) input" />
            </when>
            <when value="netcdf">
                <param name="trajs" multiple="True" type="data" format="netcdf" label="trajectory file(s) input" />
            </when>
            <when value="trr">
                <param name="trajs" multiple="True" type="data" format="trr" label="trajectory file(s) input" />
            </when>
        </conditional>
        <param name="selection" type="text" value="not water and not segname POT and not segname CLA" label="selection to keep" help="A valid mdtraj style selection string that selects atoms to keep in structure and trajectory file output">
            <validator type="regex" message="Maximum of 60 characters and space allowed.">^[a-zA-Z0-9 ]{1,60}$</validator>
        </param>
    </inputs>
    <outputs>
        <data name="outputstr" format_source="strin" />
        <data name="outputtraj" format_source="trajs" />
    </outputs>
    <tests>
        <test>
            <param name="strin" value="test.pdb" ftype="pdb" />
            <conditional name="select">
                <param name="traj_fmt" value="dcd" />
                <param name="trajs" value="test.dcd" />
            </conditional>
            <param name="selection" value="not water and not segname SOD and not segname CLA" />
            <output name="outputstr">
                <assert_contents>
                    <has_text text="ATOM      1  C1  BGL A   1 " />
                    <has_text text="ATOM     24  HO6 BGL A   1" />
                </assert_contents>
            </output>
            <output name="outputtraj">
                <assert_contents>
                    <has_size value="4000" delta="100" />
                </assert_contents>
            </output>
        </test>
        <test>
            <param name="strin" value="test.gro" ftype="gro" />
            <conditional name="select">
                <param name="traj_fmt" value="xtc" />
                <param name="trajs" value="test.xtc" />
            </conditional>
            <param name="selection" value="resname BGLC" />
            <output name="outputstr">
                <assert_contents>
                    <has_text text="    1BGLC    C1    1" />
                    <has_text text="    1BGLC   HO6   24" />
                </assert_contents>
            </output>
            <output name="outputtraj">
                <assert_contents>
                    <has_size value="1940" delta="100" />
                </assert_contents>
            </output>
        </test>
    </tests>
    <help><![CDATA[
.. class:: infomark

**What it does**

This tool is a filter and multijoin for trajectory files. You can select specific molecules (or atoms) and save out a new structure and trajectory file. If there are multiple trajectories selected, then these will all be combined into a single trajectory output.

Use this tool to:
  - reduce the size of trajectories for later analysis and help with selections where analysis tools may not have selection features that you need.
  - combine trajectories for analysis, this is imperative for proper molecular dynamics analysis.

_____


.. class:: infomark

**Input**

       - Structure file (pdb,gro)
       - Choose a format of trajectory file (trr,xtc, dcd, netcdf)
       - Trajectory file(s) (the files displayed are filtered by the trajectory type chosen).
       - A valid mdtraj selection for the system under consideration. For example: not water and segname CARA and not type H

_____


.. class:: infomark

**Output**

       - Structure file (same as input format)
       - Trajectory file (same as input format)
    ]]></help>
    <expand macro="citations" />
</tool>