view rbdock.xml @ 7:309fd04bcfd2 draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/rdock commit 6037a8c8d53839daad1b183e1ae0329862ac2c2c"
author bgruening
date Mon, 04 May 2020 07:40:41 -0400
parents 07fa39ed62c7
children c362398df83b
line wrap: on
line source

<tool id="rdock_rbdock" name="rDock docking" version="0.1.4" profile="19.01">
    <description>- perform protein-ligand docking with rDock</description>
    <macros>
        <import>rdock_macros.xml</import>
    </macros>
    <expand macro="requirements"/>
    <command><![CDATA[
ln -s '$active_site' receptor.as &&
ln -s '$receptor' receptor.mol2 &&

#if $custom_rec.custom_rec_select == 'true':
    ## simple check that the receptor file name is correct
    grep -q 'RECEPTOR_FILE receptor.mol2' $custom_rec.prm_file || (echo "Error: a custom receptor.prm file must contain the line 'RECEPTOR_FILE receptor.mol2'" >&2 && exit 1) &&
    ln -s '$custom_rec.prm_file' receptor.prm &&
#else
    ln -s '$receptor_prm' receptor.prm &&
#end if

#if $name == 'Y':
  sdmodify -f_REC '$ligands' > ligands.sdf &&
#else
  ln -s '$ligands' ligands.sdf &&
#end if

python '$__tool_directory__/rbdock.py'
    -n '$num'
    #if $seed:
        -s '$seed'
    #end if
    &&

cat rdock_output.sd 

#if $filter.filter_select == "filter":
    #if $filter.score:
        | sdfilter -f'\$SCORE <= ${filter.score}'
    #end if
    #if $filter.nscore:
        | sdfilter -f'\$SCORE.norm <= ${filter.nscore}'
    #end if
    #if $filter.top
        | sdsort -n -s -fSCORE | sdfilter -f'\$_COUNT <= $filter.top'
    #end if
#end if

 > '$output'

    ]]></command>

    <configfiles>
        <configfile name="receptor_prm">RBT_PARAMETER_FILE_V1.00
RECEPTOR_FILE receptor.mol2
#if $custom_rec.custom_rec_select == 'false':
RECEPTOR_FLEX $custom_rec.flex
#end if
        </configfile>
    </configfiles>

    <inputs>
        <param type="data" name="receptor" format="mol2" label="Receptor" help="Select a receptor (mol2 format)."/>
        <param type="data" name="active_site" format="rdock_as" label="Active site" help="Active site file"/>
        <param type="data" name="ligands" format="sdf,mol" label="Ligands" help="Ligands in SDF format (or single ligand in MOL format)"/>
        <conditional name="custom_rec">
            <param name="custom_rec_select" type="select" label="Use a custom receptor.prm file?" help="Useful for more advanced use-cases, such as tethered docking.">
                <option value="true">Use custom receptor.prm file</option>
                <option value="false" selected="true">Use default options (no user upload required)</option>
            </param>
            <when value="true">
                <param type="data" name="prm_file" format="txt" label="Receptor prm file" help="Note the file must contain the line 'RECEPTOR_FILE receptor.mol2', else the tool will fail."/>
            </when>
            <when value="false">
                <param name="flex" type="float" value="3.0" min="0.0" label="Receptor flex" help="Value for RECEPTOR_FLEX (default 3)"/>
            </when>
        </conditional>

        <param name="num" type="integer" value="10" label="Number of dockings" help="Number of poses to generate"/>
        <conditional name="filter">
            <param name="filter_select" type="select" label="Filter the docking results" help="Using sdfilter">
                <option value="filter">Show filter options</option>
                <option value="no_filter">No filtering</option>
            </param>
            <when value="filter">
                <param name="score" type="float" optional="true" label="Score filter"
                   help="Exclude poses with score greater than this value"/>
                <param name="nscore" type="float" optional="true" label="Normalised score filter"
                    help="Exclude poses with normalised score greater than this value"/>
                <param name="top" type="integer" value="1" optional="true" min="1" label="Number of best poses"
                    help="Number of best scoring poses to keep"/>
            </when>
            <when value="no_filter"/>
        </conditional>
        <param name="name" type="boolean" label="Generate name field" truevalue="Y" falsevalue="N" checked="false"
               help="Generate the name field (first line) for cases where this is empty"/>
        <param argument="-seed" type="integer" optional="true" label="Random seed" help=""/>
    </inputs>
    <outputs>
        <data name="output" format="sdf" label="rDock on ${on_string}"/>
    </outputs>
    <tests>
        <!-- broken ligand test -->
        <test expect_failure="true" expect_exit_code="23">
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="broken_ligand.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="num" value="3"/>
            <param name="flex" value="3"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="filter"/>
                <param name="top" value="1"/>
            </conditional>
            <param name="name" value="false"/>
        </test>
        <test>
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="ligands_names.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="num" value="3"/>
            <param name="flex" value="3"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="filter"/>
                <param name="top" value="1"/>
            </conditional>
            <param name="name" value="false"/>
            <output name="output">
                <assert_contents>
                    <has_text text="Rbt.Current_Directory"/>
                    <has_n_lines n="352"/>
                </assert_contents>
            </output>
        </test>
        <test>
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="ligands_nonames.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="num" value="3"/>
            <param name="flex" value="3"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="filter"/>
                <param name="top" value="1"/>
            </conditional>
            <param name="name" value="true"/>
            <output name="output">
                <assert_contents>
                    <has_text text="Rbt.Current_Directory"/>
                     <has_n_lines n="352"/>
                </assert_contents>
            </output>
        </test>
        <!-- no filter test -->
        <test>
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="ligands_nonames.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="num" value="3"/>
            <param name="flex" value="3"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="no_filter"/>
            </conditional>
            <param name="name" value="true"/>
            <output name="output">
                <assert_contents>
                    <has_text text="Rbt.Current_Directory"/>
                    <has_n_lines n="1056"/>
                </assert_contents>
            </output>
        </test>
        <test>
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="ligands_names.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="num" value="1"/>
            <param name="flex" value="3"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="filter"/>
                <param name="score" value="10"/>
                <param name="nscore" value="1"/>
            </conditional>
            <param name="name"/>
            <output name="output">
                <assert_contents>
                    <has_text text="Rbt.Current_Directory"/>
                     <has_n_lines n="352"/>
                </assert_contents>
            </output>
        </test>
        <!-- test with custom receptor.prm -->
        <test>
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="ligands_names.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="custom_rec_select" value="true"/>
            <param name="prm_file" value="receptor.prm"/>
            <param name="num" value="1"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="filter"/>
                <param name="score" value="10"/>
                <param name="nscore" value="1"/>
            </conditional>
            <param name="name"/>
            <output name="output">
                <assert_contents>
                    <has_text text="Rbt.Current_Directory"/>
                     <has_n_lines n="352"/>
                </assert_contents>
            </output>
        </test>
        <!-- test with custom but broken receptor.prm -->
        <test expect_failure="true" expect_exit_code="1">
            <param name="receptor" value="receptor.mol2"/>
            <param name="ligands" value="ligands_names.sdf"/>
            <param name="active_site" value="receptor.as"/>
            <param name="custom_rec_select" value="true"/>
            <param name="prm_file" value="wrong_receptor.prm"/>
            <param name="num" value="1"/>
            <param name="seed" value="3"/>
            <conditional name="filter">
                <param name="filter_select" value="no_filter"/>
            </conditional>
            <param name="name"/>
        </test>
    </tests>
    <help><![CDATA[

.. class:: infomark

This tool performs protein-ligand docking using the rDock program.
See http://rdock.sourceforge.net/ for more details about rDock and associated programs.

-----

.. class:: infomark

**Inputs**

1. The protein receptor to dock into as a file in Mol2 format.
2. The active site definition as a file as generated by the rbcavity tool.
3. A set of ligands (collection or single file) to dock as a file in SDF format.
4. The number of docking poses to generate (integer).
5. The number of best scoring dockings to keep (integer).
6. The max score that is allowed. Poses with scores greater than this are excluded (float, optional).
7. The max normalised score (the score normalised by the number of heavy atoms) that is allowed.
   Poses with normalised scores greater than this are excluded (float, optional).
8. Optionally generate the name field in the ligands SDF (this is the first line in the entry).
   This field must be present and be unique for sorting and filtering to work. If your results contain only one record
   then the name field is probably absent and must be generated.

You will need to perform some test dockings to establish suitable values for the score filters.
The score is a number with lower values being better. Values can be negative.

-----

.. class:: infomark

**Outputs**

An SDF file is produced as output. The binding affinity scores are contained within the SDF file.::

    1-pyrimethamine
    rDOCK(R)          3D
    libRbt.so/2013.1/901 2013/11/27
    21 22  0  0  0  0  0  0  0  0999 V2000
    -5.1897   17.8912   17.9590 N   0  0  0  0  0  0
    -3.9121   17.9973   18.3210 C   0  0  0  0  0  0
    -3.2404   19.1465   18.3804 N   0  0  0  0  0  0
    -3.8989   20.2829   18.0453 C   0  0  0  0  0  0
    -5.2389   20.2802   17.6553 C   0  0  0  0  0  0
    -5.8448   19.0235   17.6464 C   0  0  0  0  0  0
    -5.9601   21.5065   17.2850 C   0  0  0  0  0  0
    -6.2108   22.5074   18.2382 C   0  0  0  0  0  0
    -6.8903   23.6771   17.8851 C   0  0  0  0  0  0
    -7.3267   23.8556   16.5746 C   0  0  0  0  0  0
    -7.0903   22.8744   15.6151 C   0  0  0  0  0  0
    -6.4107   21.7051   15.9695 C   0  0  0  0  0  0
    -3.2455   16.8582   18.6507 N   0  0  0  0  0  0
    -7.1550   18.8446   17.2393 N   0  0  0  0  0  0
    -8.1626   25.2957   16.1391 Cl  0  0  0  0  0  0
    -2.9891   22.1828   19.5033 C   0  0  0  0  0  0
    -3.1112   21.5771   18.1096 C   0  0  0  0  0  0
    -2.2766   16.9101   18.9273 H   0  0  0  0  0  0
    -3.7237   15.9703   18.6154 H   0  0  0  0  0  0
    -7.8809   19.3992   17.6807 H   0  0  0  0  0  0
    -7.4159   17.8951   16.9940 H   0  0  0  0  0  0
    1  2  2  0  0  0
    1  6  1  0  0  0
    2  3  1  0  0  0
    2 13  1  0  0  0
    3  4  2  0  0  0
    4  5  1  0  0  0
    4 17  1  0  0  0
    5  6  2  0  0  0
    5  7  1  0  0  0
    6 14  1  0  0  0
    7  8  2  0  0  0
    7 12  1  0  0  0
    8  9  1  0  0  0
    9 10  2  0  0  0
    10 11  1  0  0  0
    10 15  1  0  0  0
    11 12  2  0  0  0
    13 18  1  0  0  0
    13 19  1  0  0  0
    14 20  1  0  0  0
    14 21  1  0  0  0
    16 17  1  0  0  0
    M  END
    >  <CHROM.0>
    -177.71086620,1.45027861,170.39044546,46.02877151,68.76956623,70.55425150

    >  <CHROM.1>
    -81.34718191,-65.90186149,129.45748660,-5.61305786,21.23281353,17.50152835
    0.96119776,0.49809360,-3.12917831

    >  <Rbt.Current_Directory>
    /home/timbo/github/im/docking-validation/targets/dhfr/expts/vs-simple-rdock

    >  <Rbt.Executable>
    rbdock ($Id: //depot/dev/client3/rdock/2013.1/src/exe/rbdock.cxx#4 $)

    >  <Rbt.Library>
    libRbt.so (2013.1, Build901 2013/11/27)

    >  <Rbt.Parameter_File>
    /rDock_2013.1/data/scripts/dock.prm

    >  <Rbt.Receptor>
    receptor.prm

    >  <SCORE>
    0.445364

    >  <SCORE.INTER>
    8.4

    >  <SCORE.INTER.CONST>
    1

    >  <SCORE.INTER.POLAR>
    0

    >  <SCORE.INTER.REPUL>
    0

    >  <SCORE.INTER.ROT>
    3

    >  <SCORE.INTER.VDW>
    0

    >  <SCORE.INTER.norm>
    0.494118

    >  <SCORE.INTRA>
    -1.38672

    >  <SCORE.INTRA.DIHEDRAL>
    -0.818539

    >  <SCORE.INTRA.DIHEDRAL.0>
    6.01924

    >  <SCORE.INTRA.POLAR>
    0

    >  <SCORE.INTRA.POLAR.0>
    0

    >  <SCORE.INTRA.REPUL>
    0

    >  <SCORE.INTRA.REPUL.0>
    0

    >  <SCORE.INTRA.VDW>
    -0.977448

    >  <SCORE.INTRA.VDW.0>
    -1.0079

    >  <SCORE.INTRA.norm>
    -0.0815716

    >  <SCORE.RESTR>

    >  <SCORE.RESTR.norm>
    0

    >  <SCORE.SYSTEM>
    -6.56792

    >  <SCORE.SYSTEM.CONST>
    0

    >  <SCORE.SYSTEM.DIHEDRAL>
    1.50415

    >  <SCORE.SYSTEM.POLAR>
    -2.3289

    >  <SCORE.SYSTEM.VDW>
    0.59827

    >  <SCORE.SYSTEM.norm>
    -0.386348

    >  <SCORE.heavy>
    17

    >  <SCORE.norm>
    0.0261979

    $$$$

    ]]></help>
    <expand macro="citations"/>
</tool>