view qcxms_neutral_run.xml @ 0:1d3fd08e50ff draft

planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/qcxms commit 45ad41f2368834ab06929496fb17fc9a85b8e3c5
author recetox
date Thu, 22 Feb 2024 08:41:17 +0000
parents
children 0d9d72ef658f
line wrap: on
line source

<tool id="qcxms_neutral_run" name="QCxMS neutral run" version="@TOOL_VERSION@+galaxy0" profile="21.05">
    <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,txt" />
        <param name="QC_Level" type="select" display="radio" label="QC Method">
            <option value="xtb2" selected="true">GFN2-xTB</option>
            <option value="xtb">GFN-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="coords 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="coords 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="coords 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="txt"/>
            <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>
    </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>