Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

autodock_vina_rescore #180

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions utils/autodock-vina-rescore-plugin/.bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[bumpversion]
current_version = 0.1.0
commit = False
tag = False
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+)(?P<dev>\d+))?
serialize =
{major}.{minor}.{patch}-{release}{dev}
{major}.{minor}.{patch}

[bumpversion:part:release]
optional_value = _
first_value = dev
values =
dev
_

[bumpversion:part:dev]

[bumpversion:file:pyproject.toml]
search = version = "{current_version}"
replace = version = "{new_version}"

[bumpversion:file:VERSION]

[bumpversion:file:README.md]

[bumpversion:file:plugin.json]

[bumpversion:file:src/polus/mm/utils/autodock_vina_rescore/__init__.py]
4 changes: 4 additions & 0 deletions utils/autodock-vina-rescore-plugin/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.venv
out
tests
__pycache__
2 changes: 2 additions & 0 deletions utils/autodock-vina-rescore-plugin/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.pdb filter=lfs diff=lfs merge=lfs -text
*.pdbqt filter=lfs diff=lfs merge=lfs -text
1 change: 1 addition & 0 deletions utils/autodock-vina-rescore-plugin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
poetry.lock
5 changes: 5 additions & 0 deletions utils/autodock-vina-rescore-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# CHANGELOG

## 0.1.0

Initial release.
22 changes: 22 additions & 0 deletions utils/autodock-vina-rescore-plugin/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM condaforge/miniforge3
# NOT miniforge-pypy3 (The build process is incompatible with pypy)

# RUN conda install -c conda-forge vina

RUN apt-get update && apt-get install -y git
RUN git clone https://github.com/ccsb-scripps/AutoDock-Vina.git

# Prevent being prompted for geographical region
ARG DEBIAN_FRONTEND=noninteractive

# Build vina binary
RUN apt-get update && apt-get install -y build-essential libboost-all-dev swig
RUN cd AutoDock-Vina/build/linux/release && make
# Since there is no make install, manually copy vina
RUN cp AutoDock-Vina/build/linux/release/vina /usr/bin/

# Build and install python bindings
RUN conda install -c conda-forge numpy boost-cpp swig
RUN cd AutoDock-Vina/build/python && python setup.py build install

ADD Dockerfile .
19 changes: 19 additions & 0 deletions utils/autodock-vina-rescore-plugin/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# autodock_vina_rescore (0.1.0)

Wrapper of the AutoDock Vina software.

## Options

This plugin takes 6 input arguments and 3 output argument:

| Name | Description | I/O | Type | Default |
|---------------|-------------------------|--------|--------|---------|
| input_ligand_pdbqt_path | 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 | Input | File | File |
| input_receptor_pdbqt_path | 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 | Input | File | File |
| local_only | Do local search only | Input | boolean | boolean |
| score_only | Do not do any conformational search; simply rescore. | Input | boolean | boolean |
| output_ligand_pdbqt_path | Path to the output PDBQT ligand, 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 | Input | string | string |
| output_log_path | 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 | Input | string | string |
| output_ligand_pdbqt_path | Path to the output PDBQT files | Output | {'type': 'array', 'items': 'File'} | {'type': 'array', 'items': 'File'} |
| output_log_path | Path to the log file | Output | File | File |
| docking_score | Estimated Free Energy of Binding | Output | float | float |
1 change: 1 addition & 0 deletions utils/autodock-vina-rescore-plugin/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.1.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@

#!/usr/bin/env cwl-runner
cwlVersion: v1.0

# NOTE: This file is nearly identical to autodock_vina_batch with the primary difference that
# --input_batch_pdbqt_path is replaced with --input_ligand_pdbqt_path.
# (For no obvious reason, --score_only only works with --ligand, not --batch)

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:
- "--autobox"
# NOTE: The documentation for --score_only claims "search space can be omitted" which is not quite correct;
# if you omit --center_* and --size_* you get "ERROR: Grid box dimensions must be greater than 0 Angstrom."
# However, adding --autobox works.

hints:
DockerRequirement:
dockerPull: polusai/autodock-vina-tool@sha256:98e353a67fbe76c010647bc80e15c86bf1f1c34fef25f58a41ada1a831496114

requirements:
InlineJavascriptRequirement: {}
# InitialWorkDirRequirement is needed for --local_only, because vina writes out
# the optimized geometry in the same directory as input_ligand_pdbqt_path,
# which needs to be writeable.
InitialWorkDirRequirement:
listing:
- $(inputs.input_ligand_pdbqt_path)

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:
position: 1
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

local_only:
label: Do local search only
doc: Do local search only
type: boolean?
#format:
#- edam_format_2330 # textual format
inputBinding:
prefix: --local_only

score_only:
label: Do not do any conformational search; simply rescore.
doc: Do not do any conformational search; simply rescore.
type: boolean?
#format:
#- edam_format_2330 # textual format
inputBinding:
prefix: --score_only

output_ligand_pdbqt_path:
label: Path to the output PDBQT ligand
doc: |-
Path to the output PDBQT ligand
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

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

outputs:
output_ligand_pdbqt_path:
label: Path to the output PDBQT files
doc: |-
Path to the output PDBQT files
#type: File[]
type:
type: array
items: File
outputBinding:
glob: ./*_out.pdbqt # Use ./* because leading *'s are reserved syntax for Yaml aliases.
outputEval: |
${
if (self.length > 0) { // if --local_only
return self;
} else { // if --score_only
return [inputs.input_ligand_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

docking_score:
label: Estimated Free Energy of Binding
doc: |-
Estimated Free Energy of Binding
type: float
outputBinding:
glob: $(inputs.output_log_path)
loadContents: true
outputEval: |
${
var lines = self[0].contents.split("\n");
// The correct line should be of the form
// Estimated Free Energy of Binding : -6.053 (kcal/mol) [=(1)+(2)+(3)+(4)]
var bfe_line = lines.filter(function(s) {return s.split(" ")[0] == "Estimated"})[0];
var docking_score_string = bfe_line.split(" ").filter(function(s) {return !isNaN(parseFloat(s))})[0];
var docking_score = parseFloat(docking_score_string);
return docking_score
}

stdout: $(inputs.output_log_path)

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

$schemas:
- https://raw.githubusercontent.com/edamontology/edamontology/master/EDAM_dev.owl
4 changes: 4 additions & 0 deletions utils/autodock-vina-rescore-plugin/build-docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

version=$(<VERSION)
docker build . -t polusai/polusai/autodock-vina-tool:${version}
89 changes: 89 additions & 0 deletions utils/autodock-vina-rescore-plugin/ict.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
specVersion: "0.1.0"
name: autodock_vina_rescore
version: 0.1.0
container: autodock-vina-rescore-plugin
entrypoint:
title: autodock_vina_rescore
description: Wrapper of the AutoDock Vina software.
author: Data Scientist
contact: [email protected]
repository:
documentation:
citation:

inputs:
- name: input_ligand_pdbqt_path
required: true
description: 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:
uri: edam:format_1476
- name: input_receptor_pdbqt_path
required: true
description: 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:
uri: edam:format_1476
- name: local_only
required: true
description: Do local search only
type: boolean
- name: score_only
required: true
description: Do not do any conformational search; simply rescore.
type: boolean
- name: output_ligand_pdbqt_path
required: true
description: Path to the output PDBQT ligand, 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:
uri: edam:format_1476
- name: output_log_path
required: true
description: 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
defaultValue: system.log
format:
uri: edam:format_2330
outputs:
- name: output_ligand_pdbqt_path
required: true
description: Path to the output PDBQT files
type: {'type': 'array', 'items': 'File'}
format:
uri: edam:format_1476
- name: output_log_path
required: true
description: Path to the log file
type: File
format:
uri: edam:format_2330
- name: docking_score
required: true
description: Estimated Free Energy of Binding
type: float
ui:
- key: inputs.input_ligand_pdbqt_path
title: "input_ligand_pdbqt_path: "
description: "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
- key: inputs.input_receptor_pdbqt_path
title: "input_receptor_pdbqt_path: "
description: "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
- key: inputs.local_only
title: "local_only: "
description: "Do local search only"
type: checkbox
- key: inputs.score_only
title: "score_only: "
description: "Do not do any conformational search; simply rescore."
type: checkbox
- key: inputs.output_ligand_pdbqt_path
title: "output_ligand_pdbqt_path: "
description: "Path to the output PDBQT ligand, 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
- key: inputs.output_log_path
title: "output_log_path: "
description: "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
30 changes: 30 additions & 0 deletions utils/autodock-vina-rescore-plugin/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[tool.poetry]
name = "polus-mm-utils-autodock-vina-rescore"
version = "0.1.0"
description = "Wrapper of the AutoDock Vina software."
authors = ["Data Scientist <[email protected]>"]
readme = "README.md"

[tool.poetry.dependencies]
python = ">=3.9,<3.13"
typer = "^0.7.0"
sophios = "0.1.4"
pandas = "2.2.2"

[tool.poetry.group.dev.dependencies]
bump2version = "^1.0.1"
pytest = "^7.4"
pytest-sugar = "^0.9.6"
pre-commit = "^3.2.1"
black = "^23.3.0"
mypy = "^1.1.1"
ruff = "^0.0.270"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.pytest.ini_options]
pythonpath = [
"."
]
1 change: 1 addition & 0 deletions utils/autodock-vina-rescore-plugin/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Tests for autodock_vina_rescore."""
3 changes: 3 additions & 0 deletions utils/autodock-vina-rescore-plugin/tests/ligand.pdbqt
Git LFS file not shown
3 changes: 3 additions & 0 deletions utils/autodock-vina-rescore-plugin/tests/receptor.pdbqt
Git LFS file not shown
Loading
Loading