diff --git a/utils/docking/diffdock/.gitattributes b/utils/docking/diffdock/.gitattributes new file mode 100644 index 00000000..07fedc1e --- /dev/null +++ b/utils/docking/diffdock/.gitattributes @@ -0,0 +1,5 @@ +*.pdb filter=lfs diff=lfs merge=lfs -text +*.pdbqt filter=lfs diff=lfs merge=lfs -text +*.mol2 filter=lfs diff=lfs merge=lfs -text +*.xlsx filter=lfs diff=lfs merge=lfs -text +*.sdf filter=lfs diff=lfs merge=lfs -text diff --git a/utils/pose-cluster-filter-plugin/.bumpversion.cfg b/utils/docking/diffdock/pose-cluster-filter-tool/.bumpversion.cfg similarity index 100% rename from utils/pose-cluster-filter-plugin/.bumpversion.cfg rename to utils/docking/diffdock/pose-cluster-filter-tool/.bumpversion.cfg diff --git a/utils/pose-cluster-filter-plugin/.dockerignore b/utils/docking/diffdock/pose-cluster-filter-tool/.dockerignore similarity index 100% rename from utils/pose-cluster-filter-plugin/.dockerignore rename to utils/docking/diffdock/pose-cluster-filter-tool/.dockerignore diff --git a/utils/pose-cluster-filter-plugin/.gitignore b/utils/docking/diffdock/pose-cluster-filter-tool/.gitignore similarity index 100% rename from utils/pose-cluster-filter-plugin/.gitignore rename to utils/docking/diffdock/pose-cluster-filter-tool/.gitignore diff --git a/utils/pose-cluster-filter-plugin/CHANGELOG.md b/utils/docking/diffdock/pose-cluster-filter-tool/CHANGELOG.md similarity index 100% rename from utils/pose-cluster-filter-plugin/CHANGELOG.md rename to utils/docking/diffdock/pose-cluster-filter-tool/CHANGELOG.md diff --git a/utils/pose-cluster-filter-plugin/Dockerfile b/utils/docking/diffdock/pose-cluster-filter-tool/Dockerfile similarity index 50% rename from utils/pose-cluster-filter-plugin/Dockerfile rename to utils/docking/diffdock/pose-cluster-filter-tool/Dockerfile index 37c09caa..278a69e3 100644 --- a/utils/pose-cluster-filter-plugin/Dockerfile +++ b/utils/docking/diffdock/pose-cluster-filter-tool/Dockerfile @@ -1,5 +1,5 @@ -# docker build -f Dockerfile -t mrbrandonwalker/pose_cluster_filter_tool . +# docker build -f Dockerfile -t polusai/pose-cluster-filter-tool . FROM condaforge/mambaforge ENV EXEC_DIR="/opt/executables" @@ -16,16 +16,11 @@ COPY README.md ${EXEC_DIR} COPY CHANGELOG.md ${EXEC_DIR} # Install needed packages here -# errors installing rdkit from poetry so using conda -COPY environment.yml ${EXEC_DIR} -RUN mamba env create -f ${EXEC_DIR}/environment.yml -RUN echo "source activate project_env" > ~/.bashrc -ENV PATH /opt/conda/envs/env/bin:$PATH COPY src ${EXEC_DIR}/src ADD Dockerfile . -RUN conda run -n project_env pip install ${EXEC_DIR} --no-cache-dir +RUN pip3 install ${EXEC_DIR} --no-cache-dir CMD ["--help"] diff --git a/utils/pose-cluster-filter-plugin/README.md b/utils/docking/diffdock/pose-cluster-filter-tool/README.md similarity index 100% rename from utils/pose-cluster-filter-plugin/README.md rename to utils/docking/diffdock/pose-cluster-filter-tool/README.md diff --git a/utils/pose-cluster-filter-plugin/VERSION b/utils/docking/diffdock/pose-cluster-filter-tool/VERSION similarity index 100% rename from utils/pose-cluster-filter-plugin/VERSION rename to utils/docking/diffdock/pose-cluster-filter-tool/VERSION diff --git a/utils/docking/diffdock/pose-cluster-filter-tool/build-docker.sh b/utils/docking/diffdock/pose-cluster-filter-tool/build-docker.sh new file mode 100755 index 00000000..63dc0a48 --- /dev/null +++ b/utils/docking/diffdock/pose-cluster-filter-tool/build-docker.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +version=$( None: + """Parse the arguments and call the function.""" + # Create the argument parser + parser = argparse.ArgumentParser(description="pose_cluster_filter.") -@app.command() -def main( - centroid_cutoff: float = typer.Option( - ..., + # Add arguments + parser.add_argument( "--centroid_cutoff", - help="", - ), - predicted_poses: list[Path] = typer.Option( - ..., + type=float, + required=True, + help="The cutoff distance for the centroid.", + ) + parser.add_argument( "--predicted_poses", - help="", - ), -) -> None: - """pose_cluster_filter.""" + type=Path, + nargs="+", + required=True, + help="A list of paths to the predicted poses.", + ) + + # Parse the arguments + args = parser.parse_args() + + # Extract arguments + centroid_cutoff = args.centroid_cutoff + predicted_poses = args.predicted_poses + + # Log the arguments logger.info(f"centroid_cutoff: {centroid_cutoff}") logger.info(f"predicted_poses: {predicted_poses}") + # Call the function with the arguments pose_cluster_filter( centroid_cutoff=centroid_cutoff, predicted_poses=predicted_poses, @@ -43,4 +57,4 @@ def main( if __name__ == "__main__": - app() + main() diff --git a/utils/pose-cluster-filter-plugin/src/polus/mm/utils/pose_cluster_filter/pose_cluster_filter.py b/utils/docking/diffdock/pose-cluster-filter-tool/src/polus/mm/utils/pose_cluster_filter/pose_cluster_filter.py similarity index 100% rename from utils/pose-cluster-filter-plugin/src/polus/mm/utils/pose_cluster_filter/pose_cluster_filter.py rename to utils/docking/diffdock/pose-cluster-filter-tool/src/polus/mm/utils/pose_cluster_filter/pose_cluster_filter.py diff --git a/utils/pose-cluster-filter-plugin/tests/__init__.py b/utils/docking/diffdock/pose-cluster-filter-tool/tests/__init__.py similarity index 100% rename from utils/pose-cluster-filter-plugin/tests/__init__.py rename to utils/docking/diffdock/pose-cluster-filter-tool/tests/__init__.py diff --git a/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank1_confidence0.36.sdf b/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank1_confidence0.36.sdf new file mode 100644 index 00000000..c200554a --- /dev/null +++ b/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank1_confidence0.36.sdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca8ad00e2818f8e0dd85346db3f34a48533902a172ca39eacb72319758aa8255 +size 2355 diff --git a/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank2_confidence0.35.sdf b/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank2_confidence0.35.sdf new file mode 100644 index 00000000..da56ccdb --- /dev/null +++ b/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank2_confidence0.35.sdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b57ffcca27c7462847ec1e6484f795fd0b1b05f2ae3cfbd30a9c00095979942 +size 2355 diff --git a/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank3_confidence0.34.sdf b/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank3_confidence0.34.sdf new file mode 100644 index 00000000..f46b0523 --- /dev/null +++ b/utils/docking/diffdock/pose-cluster-filter-tool/tests/rank3_confidence0.34.sdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d5b5786bb8fa92372cea3fc3b28b562fa3f0afe0a177e590815decbb7378bea +size 2355 diff --git a/utils/pose-cluster-filter-plugin/tests/test_pose_cluster_filter.py b/utils/docking/diffdock/pose-cluster-filter-tool/tests/test_pose_cluster_filter.py similarity index 51% rename from utils/pose-cluster-filter-plugin/tests/test_pose_cluster_filter.py rename to utils/docking/diffdock/pose-cluster-filter-tool/tests/test_pose_cluster_filter.py index cfbbc5dd..e2f786eb 100644 --- a/utils/pose-cluster-filter-plugin/tests/test_pose_cluster_filter.py +++ b/utils/docking/diffdock/pose-cluster-filter-tool/tests/test_pose_cluster_filter.py @@ -1,16 +1,9 @@ """Tests for pose_cluster_filter.""" -import sys from pathlib import Path from polus.mm.utils.pose_cluster_filter.pose_cluster_filter import pose_cluster_filter - -current_dir = Path(__file__).resolve().parent -target_dir = current_dir.parent.parent.parent / "cwl_utils" -sys.path.append(str(target_dir)) - -from cwl_utilities import call_cwltool # noqa: E402 -from cwl_utilities import create_input_yaml # noqa: E402 -from cwl_utilities import parse_cwl_arguments # noqa: E402 +from sophios.api.pythonapi import Step +from sophios.api.pythonapi import Workflow def test_pose_cluster_filter() -> None: @@ -35,22 +28,38 @@ def test_pose_cluster_filter() -> None: def test_pose_cluster_filter_cwl() -> None: """Test the pose_cluster_filter CWL.""" - cwl_file = Path("pose_cluster_filter.cwl") - input_to_props = parse_cwl_arguments(cwl_file) + cwl_file_str = "pose_cluster_filter_0@1@0.cwl" + cwl_file = Path(__file__).resolve().parent.parent / Path(cwl_file_str) + predicted_poses = [ "rank2_confidence0.35.sdf", "rank3_confidence0.34.sdf", "rank1_confidence0.36.sdf", ] - file_dict = input_to_props["predicted_poses"][0] - input_to_props["predicted_poses"] = [] - for pose in predicted_poses: - file_dict_current = file_dict.copy() - path_pose = str(Path(__file__).resolve().parent / Path(pose)) - file_dict_current["path"] = path_pose - input_to_props["predicted_poses"].append(file_dict_current) - - input_yaml_path = Path("pose_cluster_filter.yml") - create_input_yaml(input_to_props, input_yaml_path) - stdout, stderr = call_cwltool(cwl_file, input_yaml_path) - assert "success" in stderr + + pose_cluster_filter = Step(clt_path=cwl_file) + pose_cluster_filter.predicted_poses = [ + { + "format": "edam:format_3814", + "class": "File", + "path": str(Path(__file__).resolve().parent / Path(pose)), + } + for pose in predicted_poses + ] + pose_cluster_filter.centroid_cutoff = 5 + + steps = [pose_cluster_filter] + filename = "pose_cluster_filter" + viz = Workflow(steps, filename) + + viz.run() + + outdir = Path("outdir") + + # Use rglob to find all .sdf files + sdf_files = list(outdir.rglob("*.sdf")) + + # Check if any .sdf files were found + if not sdf_files: + msg = f"No .sdf files found in '{outdir}'." + raise FileNotFoundError(msg) diff --git a/utils/pose-cluster-filter-plugin/build-docker.sh b/utils/pose-cluster-filter-plugin/build-docker.sh deleted file mode 100755 index 6da3e8ca..00000000 --- a/utils/pose-cluster-filter-plugin/build-docker.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -version=$(