view qcxms_neutral_run.xml @ 2:6c118de4b735 draft

planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/qcxms commit 934037d9bacdb22293792c3d7bca9d2d34b65af9
author recetox
date Tue, 16 Apr 2024 11:31:22 +0000
parents 0d9d72ef658f
children c1f752721827
line wrap: on
line source

<tool id="qcxms_neutral_run" name="QCxMS neutral run" version="@TOOL_VERSION@+galaxy2" profile="22.09">
    <description>required as first step to prepare for the production runs</description>
    
    <macros>
        <import>macros.xml</import>
    </macros>
    
    <expand macro="edam"/>
    <expand macro="creator"/>
    <expand macro="requirements"/>

    <command detect_errors="exit_code"><![CDATA[
        ln -s '$mol' molecule.xyz &&
        cat qcxms.in &&
        /qcxms_bin/qcxms -i molecule.xyz >> '$log' &&
        /qcxms_bin/qcxms -i molecule.xyz >> '$log' &&
        python3 rename.py

    ]]></command>

    <environment_variables>
        <environment_variable name="OMP_NUM_THREADS">1,2,1</environment_variable>
    </environment_variables>

    <configfiles>
        <configfile filename="qcxms.in"><![CDATA[
${QC_Level}
#if $keywords.ntraj
ntraj  ${keywords.ntraj}
#end if
tmax  ${keywords.tmax} 
tinit  ${keywords.tinit} 
ieeatm  ${keywords.ieeatm}]]>
        </configfile>
        <configfile filename="rename.py">
import os

def rename_files_with_folder_name(folder_path):
    if not os.path.exists(folder_path):
        print(f"The folder '{folder_path}' does not exist.")
        return

    for root, _, files in os.walk(folder_path):
        for filename in files:
            folder_name = os.path.basename(root)
            new_filename = f"{folder_name}_{filename}"
            
            old_path = os.path.join(root, filename)
            new_path = os.path.join(root, new_filename)

            os.rename(old_path, new_path)

path = os.getcwd() + "/TMPQCXMS"
rename_files_with_folder_name(path) 
        </configfile>
    </configfiles>

    <inputs>
        <param type="data" name="mol" label="Molecule 3D structure [.xzy]" format="xyz" />
        <param name="QC_Level" type="select" display="radio" label="QC Method">
            <option value="xtb2" selected="true">GFN2-xTB</option>
            <option value="xtb">GFN1-xTB</option>
        </param>
        <section name="keywords" title="Advanced method parameters" expanded="false" 
            help="List of advanced keywords to specify the method - for more information see [1].">
            <param name="tmax" type="float" value="20.0" label="Maximum MD time (sampling) [ps]"
            help="MD time for the mean-free-path (mfp) simulation in the EI mode. In the CID mode, this sets the number of time steps for the simulation 
            after fragmentation during internal energy scaling (implicit run type). For the explicit run type, the time for the collision MDs is fixed at 50 fs * number_of_atoms."/>
            <param name="tinit" type="float" value="500.0" label="Initial Temperature [K]"/>
            <param name="ieeatm" type="float" value="0.6" label="Impact excess energy (IEE) per atom [eV/atom]" />
            <param name="ntraj" type="integer" optional="true" min="2" label="Number of trajectories[#]" help="Default is 25 * no. of atoms if unspecified."/>
        </section>
        <param name="store_extended_output" type="boolean" value="false" label="Store additional outputs?" help="Output the logfile and generated trajectory."/>
    </inputs>

    <outputs>
        <data name="qcxms_out" format="txt" from_work_dir="qcxms.gs" label="qcxms.gs generated by ${tool.name} on ${on_string}">
            <filter>store_extended_output</filter>
        </data>
        <data name="trajectory" from_work_dir="trjM" format="txt" label="trajectories generated by ${tool.name} on ${on_string}">
            <filter>store_extended_output</filter>
        </data>
        <data name="log" format="txt" label="logfile of ${tool.name} on ${on_string}">
            <filter>store_extended_output</filter>
        </data>

        <collection name="coords1" format="txt" type="list" label="input in files generated by ${tool.name} on ${on_string}" >
            <discover_datasets pattern="(?P&lt;designation&gt;.+)\.in" format="txt" directory="TMPQCXMS" recurse="true"/>
        </collection>
        <collection name="coords2" format="txt" type="list" label="input start files generated by ${tool.name} on ${on_string}" >
            <discover_datasets pattern="(?P&lt;designation&gt;.+)\.start" format="txt" directory="TMPQCXMS" recurse="true"/>
        </collection>
        <collection name="coords3" format="txt" type="list" label="input xyz files generated by ${tool.name} on ${on_string}" >
            <discover_datasets pattern="(?P&lt;designation&gt;.+)\.xyz" format="txt" directory="TMPQCXMS" recurse="true"/>
        </collection>
    </outputs>

    <tests>
        <test expect_num_outputs="6">
            <param name="mol" value="mol.xyz" ftype="xyz"/>
            <section name="keywords">
                <param name="ntraj" value="2"/>
            </section>
            <param name="store_extended_output" value="true"/>
            <output_collection name="coords1" type="list" count="2"/>
            <output_collection name="coords2" type="list" count="2"/>
            <output_collection name="coords3" type="list" count="2"/>
            <output name="qcxms_out">
                <assert_contents>
                    <has_size value="174613" delta="300"/>
                </assert_contents>
            </output>
            <output name="trajectory">
                <assert_contents>
                    <has_size value="22150" delta="300"/>
                </assert_contents>
            </output>
            <output name="log">
                <assert_contents>
                    <has_size value="10518" delta="300"/>
                </assert_contents>
            </output>
        </test>
        <!-- test 2-->
        <test expect_num_outputs="6">
            <param name="mol" value="mol.xyz" ftype="xyz"/>
            <param name="QC_Level" value="xtb"/>
            <section name="keywords">
                <param name="ntraj" value="2"/>
            </section>
            <param name="store_extended_output" value="true"/>
            <output_collection name="coords1" type="list" count="2"/>
            <output_collection name="coords2" type="list" count="2"/>
            <output_collection name="coords3" type="list" count="2"/>
            <output name="qcxms_out">
                <assert_contents>
                    <has_size value="174613" delta="300"/>
                </assert_contents>
            </output>
            <output name="trajectory">
                <assert_contents>
                    <has_size value="22150" delta="300"/>
                </assert_contents>
            </output>
            <output name="log">
                <assert_contents>
                    <has_text text="initializing GFN1-xTB"/>
                </assert_contents>
            </output>
        </test>
    </tests>

    <help><![CDATA[
        The QCxMS Neutral Run tool serves as the first step in preparing for production runs. The tool execute neutral runs for mass 
        spectrometry simulations using the GFN2-xTB and GFN-xTB quantum chemistry methods. For detail information visit the documentation 
        at https://xtb-docs.readthedocs.io/en/latest/qcxms_doc/qcxms_run.html#excecuting-the-production-runs
        ]]>
    </help>

    <citations>
        <citation type="doi">10.1002/anie.201300158</citation>
        <citation type="doi">10.1039/C4OB01668H</citation>
        <citation type="doi">10.1021/jp5096618</citation>
        <citation type="doi">10.1255/ejms.1313</citation>
        <citation type="doi">10.1021/acs.jpca.6b02907</citation>
    </citations>
</tool>