Skip to content

Commit

Permalink
add scoring_onionnet workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
ndonyapour committed Mar 28, 2024
1 parent 4436f4b commit 4c2937e
Show file tree
Hide file tree
Showing 12 changed files with 634 additions and 54 deletions.
221 changes: 221 additions & 0 deletions cwl_adapters/autodock_vina.cwl
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@

#!/usr/bin/env cwl-runner
cwlVersion: v1.1 # See `loadContents: true` below!

class: CommandLineTool

label: Wrapper of the AutoDock Vina software.

doc: |-
This class performs docking of the ligand to a set of grids describing the target protein via the AutoDock Vina software.

baseCommand: vina # NOTE: Only version >=1.2 supports --batch!
arguments:
# Need to parse box.pdb and pass in each number separately.
# REMARK BOX CENTER: 0.102 0.019 -0.004 SIZE: 30.195 31.940 27.005
# - "--dir" # Need to explicitly pass --dir . in --batch mode
# - "."
- "--center_x"
- $(inputs.input_box_path.contents.split("\n")[0].split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[0])
- "--center_y"
- $(inputs.input_box_path.contents.split("\n")[0].split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[1])
- "--center_z"
- $(inputs.input_box_path.contents.split("\n")[0].split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[2])
- "--size_x"
- $(inputs.input_box_path.contents.split("\n")[0].split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[3])
- "--size_y"
- $(inputs.input_box_path.contents.split("\n")[0].split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[4])
- "--size_z"
- $(inputs.input_box_path.contents.split("\n")[0].split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[5])
# NOTE: Cannot use a single javascript expression to create the entire arguments list because CWL treats it as a string:
# "the `arguments` field is not valid because value is a str"
# ${
# var words = inputs.input_box_path.contents.split("\n")[0].split(" ");
# var nums = words.filter(function(s) {return !isNaN(parseFloat(s))});
# var args = {};
# args.push("--dir"); // Need to explicitly pass --dir . in --batch mode
# args.push(".");
# args.push("--center_x");
# args.push(nums[0]);
# args.push("--center_y");
# args.push(nums[1]);
# args.push("--center_z");
# args.push(nums[2]);
# args.push("--size_x");
# args.push(nums[3]);
# args.push("--size_y");
# args.push(nums[4]);
# args.push("--size_z");
# args.push(nums[5]);
# return args;
# }

hints:
DockerRequirement:
dockerPull: jakefennick/autodock_vina

requirements:
InlineJavascriptRequirement: {}

inputs:
input_ligand_pdbqt_path:
label: Path to the input PDBQT ligand
doc: |-
Path to the input PDBQT ligand
Type: string
File type: input
Accepted formats: pdbqt
Example file: https://github.com/bioexcel/biobb_vs/raw/master/biobb_vs/test/data/vina/vina_ligand.pdbqt
type: File
format:
- edam:format_1476
inputBinding:
prefix: --ligand

input_receptor_pdbqt_path:
label: Path to the input PDBQT receptor
doc: |-
Path to the input PDBQT receptor
Type: string
File type: input
Accepted formats: pdbqt
Example file: https://github.com/bioexcel/biobb_vs/raw/master/biobb_vs/test/data/vina/vina_receptor.pdbqt
type: File
format:
- edam:format_1476
inputBinding:
#position: 2
prefix: --receptor

input_box_path:
label: Path to the PDB containing the residues belonging to the binding site
doc: |-
Path to the PDB containing the residues belonging to the binding site
Type: string
File type: input
Accepted formats: pdb
Example file: https://github.com/bioexcel/biobb_vs/raw/master/biobb_vs/test/data/vina/vina_box.pdb
type: File
format:
- edam:format_1476
# inputBinding:
# position: 3
# prefix: --input_box_path
loadContents: true # requires cwlVersion: v1.1
# See https://www.commonwl.org/v1.1/CommandLineTool.html#Changelog
# Curiously, cwlVersion: v1.0 allows loadContents for outputs, but not inputs.

output_pdbqt_path:
label: Path to the output PDBQT file
doc: |-
Path to the output PDBQT file
Type: string
File type: output
Accepted formats: pdbqt
Example file: https://github.com/bioexcel/biobb_vs/raw/master/biobb_vs/test/reference/vina/ref_output_vina.pdbqt
type: string
format:
- edam:format_1476
inputBinding:
prefix: --out
default: system.pdbqt

output_log_path:
label: Path to the log file
doc: |-
Path to the log file
Type: string
File type: output
Accepted formats: log
Example file: https://github.com/bioexcel/biobb_vs/raw/master/biobb_vs/test/reference/vina/ref_output_vina.log
type: string
format:
- edam:format_2330
default: system.log

cpu:
label: The number of CPUs to use
doc: |-
The number of CPUs to use
Type: int
type: int?
format:
- edam:format_2330
inputBinding:
prefix: --cpu
default: 1

exhaustiveness:
label: exhaustiveness of the global search (roughly proportional to time).
doc: |-
exhaustiveness of the global search (roughly proportional to time).
Type: int
type: int?
format:
- edam:format_2330
inputBinding:
prefix: --exhaustiveness
default: 8

num_modes:
label: maximum number of binding modes to generate
doc: |-
Tmaximum number of binding modes to generate
Type: int
type: int?
format:
- edam:format_2330
inputBinding:
prefix: --num_modes
default: 9

min_rmsd:
label: The minimum RMSD between output poses
doc: |-
The minimum RMSD between output poses
Type: int
type: int?
format:
- edam:format_2330
inputBinding:
prefix: --min_rmsd
default: 1

energy_range:
label: maximum energy difference between the best binding mode and the worst one displayed (kcal/mol).
doc: |-
maximum energy difference between the best binding mode and the worst one displayed (kcal/mol).
Type: int
type: int?
format:
- edam:format_2330
inputBinding:
prefix: --energy_range
default: 3

outputs:
output_pdbqt_path:
label: Path to the output PDBQT file
doc: |-
Path to the output PDBQT file
type: File
outputBinding:
glob: $(inputs.output_pdbqt_path)
format: edam:format_1476

output_log_path:
label: Path to the log file
doc: |-
Path to the log file
type: File
outputBinding:
glob: $(inputs.output_log_path)
format: edam:format_2330

stdout: $(inputs.output_log_path)

$namespaces:
edam: https://edamontology.org/

$schemas:
- https://raw.githubusercontent.com/edamontology/edamontology/master/EDAM_dev.owl
129 changes: 129 additions & 0 deletions cwl_adapters/convert_pdb.cwl
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
#!/usr/bin/env cwl-runner
cwlVersion: v1.0

class: CommandLineTool

label: This class is a wrapper of the Open Babel tool.

doc: |-
Small molecule format conversion for structures or trajectories. Open Babel is a chemical toolbox designed to speak the many languages of chemical data. It's an open, collaborative project allowing anyone to search, convert, analyze, or store data from molecular modeling, chemistry, solid-state materials, biochemistry, or related areas. Visit the official page.
baseCommand: obabel
#Usage:
#obabel[-i<input-type>] <infilename> [-o<output-type>] -O<outfilename> [Options]
#...
#Options, other than -i -o -O -m, must come after the input files.
arguments: [$(inputs.input_path), "-h", "-o", "pdb", "-O", $(inputs.output_pdb_path)]
# NOTE: These arguments must be given individually; they cannot be concatenated together.
# (e.g. -xrhn) Otherwise, all but the first argument will be silently ignored!
# pdb format options
# Read Options e.g. -as
# s Output single bonds only
# b Disable bonding entirely
# c Ignore CONECT records
# Write Options, e.g. -xo
# n Do not write duplicate CONECT records to indicate bond order
# o Write origin in space group label (CRYST1 section)
hints:
DockerRequirement:
dockerPull: quay.io/biocontainers/biobb_chemistry:4.0.0--pyhdfd78af_1
requirements:
InlineJavascriptRequirement: {}
inputs:
first_molecule:
label: Index of the first molecule (1-based)
doc: |-
Input Index of the first molecule (1-based)
Type: string?
type: string?
format:
- edam:format_2330 # 'Textual format'
inputBinding:
prefix: -f
last_molecule:
label: Index of the last molecule (1-based)
doc: |-
Input Index of the last molecule (1-based)
Type: string?
type: string?
format:
- edam:format_2330 # 'Textual format'
inputBinding:
prefix: -l
input_path:
label: Path to the input file
doc: |-
Path to the input file
Type: string
File type: input
Accepted formats: dat, ent, fa, fasta, gro, inp, log, mcif, mdl, mmcif, mol, mol2, pdb, pdbqt, png, sdf, smi, smiles, txt, xml, xtc
Example file: https://github.com/bioexcel/biobb_chemistry/raw/master/biobb_chemistry/test/data/babel/babel.smi
type: File
format:
- edam:format_1637
- edam:format_1476
- edam:format_1929
- edam:format_1929
- edam:format_2033
- edam:format_3878
- edam:format_2030
- edam:format_1477
- edam:format_3815
- edam:format_1477
- edam:format_3815
- edam:format_3816
- edam:format_1476
- edam:format_1476
- edam:format_3603
- edam:format_3814
- edam:format_1196
- edam:format_1196
- edam:format_2033
- edam:format_2332
- edam:format_3875
output_pdb_path:
label: Path to the output file
doc: |-
Path to the output file
Type: string
File type: output
Accepted formats: pdb
type: string
format:
- edam:format_1476 # pdb
default: system.pdb
arg1:
label: Additional arguments
doc: |-
Additional arguments
Type: string?
type: string?
format:
- edam:format_2330 # 'Textual format'
inputBinding:
position: 1
outputs:
output_pdb_path:
label: Path to the output file
doc: |-
Path to the output file
type: File
outputBinding:
glob: $(inputs.output_pdb_path)
format: edam:format_1476 # pdb
$namespaces:
edam: https://edamontology.org/
$schemas:
- https://raw.githubusercontent.com/edamontology/edamontology/master/EDAM_dev.owl
2 changes: 1 addition & 1 deletion cwl_adapters/onionnet_featurize.cwl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class: CommandLineTool

label: Generate the features for the protein-ligand complexes using OnionNet V1

baseCommand: ["python", "/onionnet/generate_features.py"]
baseCommand: ["conda", "run", "-n", "py37", "python", "/onionnet/generate_features.py"]
arguments: ["-inp", "input.dat"]

hints:
Expand Down
2 changes: 1 addition & 1 deletion cwl_adapters/onionnet_score.cwl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class: CommandLineTool

label: OnionNet (version1) for rescoring of docking poses

baseCommand: ["python", "/onionnet/predict.py"]
baseCommand: ["conda", "run", "-n", "py37", "python", "/onionnet/predict.py"]

hints:
DockerRequirement:
Expand Down
Loading

0 comments on commit 4c2937e

Please sign in to comment.