Skip to content

Commit 1cf5480

Browse files
committed
rdock-filter and enumerate_charges services working in basic form
1 parent bde7a0f commit 1cf5480

File tree

6 files changed

+184
-13
lines changed

6 files changed

+184
-13
lines changed

data/nudt7/ligands.sdf.gz

1.33 KB
Binary file not shown.
File renamed without changes.

post-service-descriptors.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ CT_DY="application/x-squonk-service-descriptor-docker+yaml"
1414
CT_MM="multipart/mixed"
1515

1616

17-
for d in 'src/python/pipelines/dmpk' 'src/python/pipelines/docking' 'src/python/pipelines/rdkit'
17+
for d in 'src/python/pipelines/dmpk' 'src/python/pipelines/docking' 'src/python/pipelines/rdkit' 'src/python/pipelines/dimorphite'
1818
do
1919
for file in $d/*.dsd.yml
2020
do

src/nextflow/docking/rdock-filter.nsd.nf

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,48 @@
44
* reference ligand.
55
*
66
* To test this manually run something like this:
7-
* nextflow -c src/nextflow/nextflow-docker.config run src/nextflow/docking/rdock-filter.nsd.nf --ligands data/nudt7/ligands.data.gz --ligand data/nudt7/ligand.mol --receptor data/nudt7/receptor.mol2 --num_dockings 5 -with-docker informaticsmatters/rdkit_pipelines
7+
* nextflow -c src/nextflow/nextflow-docker.config run src/nextflow/docking/rdock-filter.nsd.nf --ligands data/nudt7/ligands.data.gz --refmol data/nudt7/refmol.mol --receptor data/nudt7/receptor.mol2 --num_dockings 5
88
*/
99

10-
params.ligand = "$baseDir/ligand.mol"
10+
params.refmol = "$baseDir/refmol.mol"
1111
params.ligands = "$baseDir/ligands.data.gz"
12-
params.receptor = "$baseDir/receptor.mol2"
12+
params.receptor = "$baseDir/receptor.mol2.gz"
1313
params.chunk = 25
1414
params.num_dockings = 25
1515
params.top = 1
16-
params.score = null
17-
params.nscore = null
1816
params.limit = 0
1917
params.digits = 4
2018
params.threshold = 0.0
2119
params.field = 'SCORE.norm'
2220

23-
ligand = file(params.ligand)
21+
refmol = file(params.refmol)
2422
ligands = file(params.ligands)
2523
receptor = file(params.receptor)
2624

25+
expl2 = Channel.value( "Hello there $receptor" )
26+
2727
process create_cavity {
2828

2929
container 'informaticsmatters/rdock-mini:latest'
3030
beforeScript 'chmod g+w .'
3131

3232
input:
33-
file ligand
33+
file refmol
3434
file receptor
3535

3636
output:
3737
file 'receptor.prm' into prmfile
3838
file 'receptor.as' into asfile
3939

4040
"""
41+
gunzip -c $receptor > receptor.mol2
4142
cat << EOF > receptor.prm
4243
RBT_PARAMETER_FILE_V1.00
43-
RECEPTOR_FILE $receptor
44+
RECEPTOR_FILE receptor.mol2
4445
RECEPTOR_FLEX 3.0
4546
SECTION MAPPER
4647
SITE_MAPPER RbtLigandSiteMapper
47-
REF_MOL $ligand
48+
REF_MOL $refmol
4849
RADIUS 3.0
4950
SMALL_SPHERE 1.0
5051
MIN_VOLUME 100
@@ -75,13 +76,14 @@ process dock_reference_ligand {
7576
file receptor
7677
file 'receptor.as' from asfile
7778
file 'receptor.prm' from prmfile
78-
file ligand
79+
file 'refmol.mol' from refmol
7980

8081
output:
8182
file 'best_ligand.sdf' into best_ligand
8283

8384
"""
84-
rbdock -i ligand.mol -r receptor.prm -p dock.prm -n $params.num_dockings -o docked_ligand > docked_ligand_out.log
85+
gunzip -c $receptor > receptor.mol2
86+
rbdock -i refmol.mol -r receptor.prm -p dock.prm -n $params.num_dockings -o docked_ligand > docked_ligand_out.log
8587
sdsort -n -s -fSCORE docked_ligand.sd | sdfilter -f'\$_COUNT <= 1' > best_ligand.sdf
8688
"""
8789
}
@@ -124,13 +126,14 @@ process dock_ligands {
124126
file 'docked_part*.sd' into docked_parts
125127

126128
"""
129+
gunzip -c $receptor > receptor.mol2
127130
rbdock -i $part -r receptor.prm -p dock.prm -n $params.num_dockings -o ${part.name.replace('ligands', 'docked')[0..-5]} > docked_out.log
128131
"""
129132
}
130133

131134
/* Filter, combine and publish the results.
132135
* Poses are only included if they are within ${params.threshold} of the best score obtained from docking the
133-
* target ligand into the same receptor (output of the dock_ligand process).
136+
* reference ligand into the same receptor (output of the dock_ligand process).
134137
*/
135138
process combine_and_filter {
136139

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
!<org.squonk.core.NextflowServiceDescriptor>
3+
serviceConfig:
4+
id: pipelines.docking.rdock.filter.v1
5+
"name": rDock filtering
6+
"description": Dock ligands with rDock filtering poses relative to reference ligand
7+
tags:
8+
- rdock
9+
- docking
10+
- scoring
11+
- 3d
12+
- docker
13+
- nextflow
14+
resourceUrl: null
15+
icon: icons/filter_molecules.png
16+
inputDescriptors:
17+
- name: receptor
18+
mediaType: chemical/x-mol2
19+
primaryType: org.squonk.types.Mol2File
20+
- name: refmol
21+
mediaType: chemical/x-mdl-molfile
22+
primaryType: org.squonk.types.MolFile
23+
- name: ligands
24+
mediaType: application/x-squonk-dataset-molecule+json
25+
primaryType: org.squonk.dataset.Dataset
26+
secondaryType: org.squonk.types.MoleculeObject
27+
outputDescriptors:
28+
- name: output
29+
mediaType: application/x-squonk-dataset-molecule+json
30+
primaryType: org.squonk.dataset.Dataset
31+
secondaryType: org.squonk.types.MoleculeObject
32+
optionDescriptors:
33+
- !<org.squonk.options.OptionDescriptor>
34+
typeDescriptor: !<org.squonk.options.SimpleTypeDescriptor>
35+
type: java.lang.Integer
36+
key: arg.num_dockings
37+
label: Number of dockings
38+
description: Execute this many docking runs
39+
defaultValue: 10
40+
minValues: 1
41+
maxValues: 1
42+
visible: true
43+
editable: true
44+
modes:
45+
- User
46+
- !<org.squonk.options.OptionDescriptor>
47+
typeDescriptor: !<org.squonk.options.SimpleTypeDescriptor>
48+
type: java.lang.Integer
49+
key: arg.top
50+
label: Top scoring poses
51+
description: Keep this many top scoring poses
52+
defaultValue: 1
53+
minValues: 1
54+
maxValues: 1
55+
visible: true
56+
editable: true
57+
modes:
58+
- User
59+
- !<org.squonk.options.OptionDescriptor>
60+
typeDescriptor: !<org.squonk.options.SimpleTypeDescriptor>
61+
type: java.lang.Float
62+
key: arg.threshold
63+
label: Score threshold
64+
description: Filter out poses with relative scores above this value compared to reference
65+
defaultValue: 0.0
66+
minValues: 1
67+
maxValues: 1
68+
visible: true
69+
editable: true
70+
modes:
71+
- User
72+
executorClassName: org.squonk.execution.steps.impl.ThinDatasetNextflowInDockerExecutorStep
73+
thinDescriptors:
74+
- input: ligands
75+
inputRoutes:
76+
- route: FILE
77+
- route: FILE
78+
- route: FILE
79+
outputRoutes:
80+
- route: FILE
81+
nextflowParams: |
82+
params.receptor = 'receptor.mol2.gz'
83+
params.refmol = 'refmol.mol'
84+
params.ligands = 'ligands.data.gz'
85+
${binding.variables.containsKey('num_dockings') ? 'params.num_dockings = ' + num_dockings : ''}
86+
${binding.variables.containsKey('top') ? 'params.top = ' + top : ''}
87+
${binding.variables.containsKey('threshold') ? 'params.threshold = ' + threshold : ''}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
"@class": org.squonk.core.DockerServiceDescriptor
3+
serviceConfig:
4+
id: pipelines.dimorphite.enumerate_charges.v1
5+
name: EnumerateCharges
6+
description: Generate charge forms using Dimporphite_DL
7+
tags:
8+
- rdkit
9+
- dimorphite
10+
- charges
11+
- enumerate
12+
- docker
13+
resourceUrl:
14+
icon: icons/molecule_generator.png
15+
inputDescriptors:
16+
- primaryType: org.squonk.dataset.Dataset
17+
secondaryType: org.squonk.types.MoleculeObject
18+
mediaType: application/x-squonk-dataset-molecule+json
19+
name: input
20+
outputDescriptors:
21+
- primaryType: org.squonk.dataset.Dataset
22+
secondaryType: org.squonk.types.MoleculeObject
23+
mediaType: application/x-squonk-dataset-molecule+json
24+
name: output
25+
optionDescriptors:
26+
- "@class": org.squonk.options.OptionDescriptor
27+
modes:
28+
- User
29+
typeDescriptor:
30+
type: java.lang.Float
31+
"@class": org.squonk.options.SimpleTypeDescriptor
32+
editable: true
33+
visible: true
34+
description: Minimum pH
35+
defaultValue: 5.0
36+
label: Minimum pH value
37+
key: arg.min_ph
38+
minValues: 1
39+
maxValues: 1
40+
- "@class": org.squonk.options.OptionDescriptor
41+
modes:
42+
- User
43+
typeDescriptor:
44+
type: java.lang.Float
45+
"@class": org.squonk.options.SimpleTypeDescriptor
46+
editable: true
47+
visible: true
48+
description: Maximum pH
49+
defaultValue: 9.0
50+
label: Maximum pH value
51+
key: arg.max_ph
52+
minValues: 1
53+
maxValues: 1
54+
- modes:
55+
- User
56+
editable: true
57+
"@class": org.squonk.options.OptionDescriptor
58+
typeDescriptor:
59+
type: java.lang.String
60+
"@class": org.squonk.options.SimpleTypeDescriptor
61+
key: arg.fragment_method
62+
label: Fragment method
63+
description: Approach to use for picking biggest molecular fragment
64+
values:
65+
- hac
66+
- mw
67+
defaultValue: hac
68+
visible: true
69+
executorClassName: org.squonk.execution.steps.impl.ThinDatasetDockerExecutorStep
70+
thinDescriptors:
71+
- input: input
72+
inputRoutes:
73+
- route: FILE
74+
outputRoutes:
75+
- route: FILE
76+
imageName: informaticsmatters/rdkit_pipelines
77+
command: >-
78+
python -m pipelines.dimorphite.enumerate_charges -i ${PIN}input.data.gz -if json -o ${POUT}output -of json
79+
${binding.variables.containsKey('min_ph') ? ' --min-ph ' + min_ph : ''}
80+
${binding.variables.containsKey('max_ph') ? ' --max-ph ' + max_ph : ''}
81+
${binding.variables.containsKey('fragment_method') ? ' --fragment-method ' + fragment_method : ''}

0 commit comments

Comments
 (0)