Skip to content

Commit

Permalink
TST: Add tests for parsing polyatomic core anchors
Browse files Browse the repository at this point in the history
  • Loading branch information
Bas van Beek authored and BvB93 committed Sep 15, 2022
1 parent fa566f0 commit e5c4ded
Show file tree
Hide file tree
Showing 7 changed files with 910 additions and 5 deletions.
31 changes: 29 additions & 2 deletions tests/test_distribution.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,25 @@

from pathlib import Path

import yaml
import pytest
import numpy as np

from scm.plams import Molecule
from scm.plams import Molecule, Settings, readpdb
from assertionlib import assertion
from nanoutils import delete_finally

from CAT.test_utils import assert_mol_allclose
from CAT.base import prep
from CAT.workflows import MOL as MOL_KEY
from CAT.attachment.distribution import distribute_idx

PATH = Path('tests') / 'test_files'
LIG_PATH = PATH / 'ligand'
QD_PATH = PATH / 'qd'
DB_PATH = PATH / 'database'

MOL = Molecule(PATH / 'core' / 'Cd68Se55.xyz')

IDX = np.array([i for i, at in enumerate(MOL) if at.symbol == 'Cl'])
IDX.setflags(write=False)

Expand Down Expand Up @@ -65,3 +75,20 @@ def test_distribute_idx() -> None:
assertion.assert_(distribute_idx, MOL, IDX, f=0.5, randomness='bob', exception=TypeError)
assertion.assert_(distribute_idx, MOL, IDX, f=0.5, randomness=-10, exception=ValueError)
assertion.assert_(distribute_idx, MOL, IDX, f=0.5, randomness=1.5, exception=ValueError)


@pytest.mark.slow
@delete_finally(LIG_PATH, QD_PATH, DB_PATH)
def test_cat() -> None:
"""Tests for the CAT package."""
yaml_path = PATH / 'CAT_subset.yaml'
with open(yaml_path, 'r') as f:
arg = Settings(yaml.load(f, Loader=yaml.FullLoader))

arg.path = PATH
qd_df, _, _ = prep(arg)

assertion.len_eq(qd_df, 1)
qd = qd_df[MOL_KEY].iloc[0]
qd_ref = readpdb(PATH / "qd_test_distribution.pdb")
assert_mol_allclose(qd, qd_ref)
24 changes: 24 additions & 0 deletions tests/test_files/CAT_subset.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
path: .

input_cores:
- Cd68Se55.xyz

input_ligands:
- CO

optional:
database:
dirname: database
mol_format: [pdb]
core:
dirname: core
anchor: Cl
subset:
f: 0.5
mode: uniform
ligand:
dirname: ligand
optimize: True
split: True
qd:
dirname: QD
384 changes: 384 additions & 0 deletions tests/test_files/core/Cd68Cl26Se55__26_CC[O-]@O3.pdb

Large diffs are not rendered by default.

254 changes: 254 additions & 0 deletions tests/test_files/core/Cd68Cl26Se55__26_O=C[O-]@O2O3.pdb

Large diffs are not rendered by default.

202 changes: 202 additions & 0 deletions tests/test_files/qd_test_distribution.pdb
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
HETATM 1 Cdab COR A 1 12.318 13.562 10.963 1.00 0.00 CD2+
HETATM 2 Cdac COR A 1 12.417 10.883 14.270 1.00 0.00 CD2+
HETATM 3 Cdad COR A 1 10.032 14.341 14.385 1.00 0.00 CD2+
HETATM 4 Cdae COR A 1 15.737 15.828 10.109 1.00 0.00 CD2+
HETATM 5 Cdaf COR A 1 15.831 13.031 13.270 1.00 0.00 CD2+
HETATM 6 Cdag COR A 1 13.406 16.762 13.522 1.00 0.00 CD2+
HETATM 7 Cdah COR A 1 15.749 10.334 16.598 1.00 0.00 CD2+
HETATM 8 Cdai COR A 1 13.418 13.886 16.920 1.00 0.00 CD2+
HETATM 9 Cdaj COR A 1 11.238 17.526 17.081 1.00 0.00 CD2+
HETATM 10 Cdak COR A 1 19.255 15.384 12.536 1.00 0.00 CD2+
HETATM 11 Cdal COR A 1 16.932 18.995 12.789 1.00 0.00 CD2+
HETATM 12 Cdam COR A 1 19.226 12.677 15.755 1.00 0.00 CD2+
HETATM 13 Cdan COR A 1 17.061 16.289 16.027 1.00 0.00 CD2+
HETATM 14 Cdao COR A 1 14.657 19.776 16.225 1.00 0.00 CD2+
HETATM 15 Cdap COR A 1 16.947 13.501 19.281 1.00 0.00 CD2+
HETATM 16 Cdaq COR A 1 14.702 16.928 19.384 1.00 0.00 CD2+
HETATM 17 Sear COR A 1 13.804 11.687 12.137 1.00 0.00 SE2-
HETATM 18 Seas COR A 1 11.275 15.576 12.368 1.00 0.00 SE2-
HETATM 19 Seat COR A 1 11.273 12.588 15.962 1.00 0.00 SE2-
HETATM 20 Seau COR A 1 17.358 14.032 11.248 1.00 0.00 SE2-
HETATM 21 Seav COR A 1 14.851 17.917 11.513 1.00 0.00 SE2-
HETATM 22 Seaw COR A 1 17.330 11.195 14.617 1.00 0.00 SE2-
HETATM 23 Seax COR A 1 14.939 14.990 14.931 1.00 0.00 SE2-
HETATM 24 Seay COR A 1 12.477 18.770 15.068 1.00 0.00 SE2-
HETATM 25 Seaz COR A 1 14.856 12.094 18.398 1.00 0.00 SE2-
HETATM 26 SeaA COR A 1 12.456 15.724 18.620 1.00 0.00 SE2-
HETATM 27 SeaB COR A 1 18.640 17.431 14.125 1.00 0.00 SE2-
HETATM 28 SeaC COR A 1 18.614 14.597 17.496 1.00 0.00 SE2-
HETATM 29 SeaD COR A 1 16.280 18.248 17.686 1.00 0.00 SE2-
HETATM 30 CdaE COR A 1 11.541 10.498 8.382 1.00 0.00 CD2+
HETATM 31 CdaF COR A 1 9.108 14.485 8.726 1.00 0.00 CD2+
HETATM 32 CdaG COR A 1 11.088 7.971 11.317 1.00 0.00 CD2+
HETATM 33 CdaH COR A 1 8.869 10.953 11.645 1.00 0.00 CD2+
HETATM 34 CdaI COR A 1 6.965 15.147 12.049 1.00 0.00 CD2+
HETATM 35 CdaJ COR A 1 9.068 8.786 15.547 1.00 0.00 CD2+
HETATM 36 CdaK COR A 1 6.956 12.188 15.560 1.00 0.00 CD2+
HETATM 37 CdaL COR A 1 14.652 12.541 7.429 1.00 0.00 CD2+
HETATM 38 CdaM COR A 1 12.188 16.464 7.714 1.00 0.00 CD2+
HETATM 39 CdaN COR A 1 14.718 9.621 10.384 1.00 0.00 CD2+
HETATM 40 CdaO COR A 1 9.761 17.522 10.928 1.00 0.00 CD2+
HETATM 41 CdaP COR A 1 14.444 7.205 13.615 1.00 0.00 CD2+
HETATM 42 CdaQ COR A 1 7.763 18.067 14.494 1.00 0.00 CD2+
HETATM 43 CdaR COR A 1 12.161 8.118 17.585 1.00 0.00 CD2+
HETATM 44 CdaS COR A 1 9.729 11.483 18.098 1.00 0.00 CD2+
HETATM 45 CdaT COR A 1 7.750 15.108 18.009 1.00 0.00 CD2+
HETATM 46 CdaU COR A 1 17.878 14.558 6.966 1.00 0.00 CD2+
HETATM 47 CdaV COR A 1 15.306 18.600 7.232 1.00 0.00 CD2+
HETATM 48 CdaW COR A 1 18.144 11.830 9.612 1.00 0.00 CD2+
HETATM 49 CdaX COR A 1 13.119 19.724 10.153 1.00 0.00 CD2+
HETATM 50 CdaY COR A 1 18.095 9.209 12.726 1.00 0.00 CD2+
HETATM 51 CdaZ COR A 1 10.898 20.551 13.485 1.00 0.00 CD2+
HETATM 52 Cdbc COR A 1 17.702 7.035 15.795 1.00 0.00 CD2+
HETATM 53 Cdbd COR A 1 9.115 20.839 16.869 1.00 0.00 CD2+
HETATM 54 Cdbe COR A 1 15.259 8.002 19.787 1.00 0.00 CD2+
HETATM 55 Cdbf COR A 1 13.095 11.073 20.391 1.00 0.00 CD2+
HETATM 56 Cdbg COR A 1 10.864 14.488 20.652 1.00 0.00 CD2+
HETATM 57 Cdbh COR A 1 9.109 17.876 20.380 1.00 0.00 CD2+
HETATM 58 Cdbi COR A 1 21.189 14.125 9.275 1.00 0.00 CD2+
HETATM 59 Cdbj COR A 1 19.009 17.973 9.590 1.00 0.00 CD2+
HETATM 60 Cdbk COR A 1 16.433 21.577 9.757 1.00 0.00 CD2+
HETATM 61 Cdbl COR A 1 21.434 11.666 12.183 1.00 0.00 CD2+
HETATM 62 Cdbm COR A 1 14.489 22.569 12.884 1.00 0.00 CD2+
HETATM 63 Cdbn COR A 1 21.101 9.218 15.104 1.00 0.00 CD2+
HETATM 64 Cdbo COR A 1 12.336 23.048 15.974 1.00 0.00 CD2+
HETATM 65 Cdbp COR A 1 18.959 10.187 18.825 1.00 0.00 CD2+
HETATM 66 Cdbq COR A 1 12.566 20.753 19.942 1.00 0.00 CD2+
HETATM 67 Cdbr COR A 1 16.381 10.974 22.311 1.00 0.00 CD2+
HETATM 68 Cdbs COR A 1 14.471 14.231 22.761 1.00 0.00 CD2+
HETATM 69 Cdbt COR A 1 12.284 17.286 22.743 1.00 0.00 CD2+
HETATM 70 Cdbu COR A 1 22.523 17.659 12.268 1.00 0.00 CD2+
HETATM 71 Cdbv COR A 1 20.345 21.074 12.490 1.00 0.00 CD2+
HETATM 72 Cdbw COR A 1 22.738 15.115 15.106 1.00 0.00 CD2+
HETATM 73 Cdbx COR A 1 20.757 18.765 15.488 1.00 0.00 CD2+
HETATM 74 Cdby COR A 1 18.271 22.120 15.534 1.00 0.00 CD2+
HETATM 75 Cdbz COR A 1 22.442 12.786 18.123 1.00 0.00 CD2+
HETATM 76 CdbA COR A 1 20.713 16.162 18.613 1.00 0.00 CD2+
HETATM 77 CdbB COR A 1 18.491 19.633 18.853 1.00 0.00 CD2+
HETATM 78 CdbC COR A 1 16.140 22.674 18.674 1.00 0.00 CD2+
HETATM 79 CdbD COR A 1 20.209 13.698 21.436 1.00 0.00 CD2+
HETATM 80 CdbE COR A 1 18.130 16.993 21.895 1.00 0.00 CD2+
HETATM 81 CdbF COR A 1 15.764 20.390 21.818 1.00 0.00 CD2+
HETATM 82 SebG COR A 1 12.597 8.337 9.231 1.00 0.00 SE2-
HETATM 83 SebH COR A 1 10.187 12.319 9.743 1.00 0.00 SE2-
HETATM 84 SebI COR A 1 7.563 16.216 9.797 1.00 0.00 SE2-
HETATM 85 SebJ COR A 1 10.292 9.509 13.354 1.00 0.00 SE2-
HETATM 86 SebK COR A 1 7.856 12.948 13.198 1.00 0.00 SE2-
HETATM 87 SebL COR A 1 7.505 10.163 17.031 1.00 0.00 SE2-
HETATM 88 SebM COR A 1 16.149 10.647 8.372 1.00 0.00 SE2-
HETATM 89 SebN COR A 1 13.715 14.598 8.896 1.00 0.00 SE2-
HETATM 90 SebO COR A 1 11.139 18.523 8.888 1.00 0.00 SE2-
HETATM 91 SebP COR A 1 16.116 7.800 11.715 1.00 0.00 SE2-
HETATM 92 SebQ COR A 1 8.740 19.394 12.490 1.00 0.00 SE2-
HETATM 93 SebR COR A 1 13.733 8.941 15.570 1.00 0.00 SE2-
HETATM 94 SebS COR A 1 9.089 16.290 16.005 1.00 0.00 SE2-
HETATM 95 SebT COR A 1 11.112 9.636 19.411 1.00 0.00 SE2-
HETATM 96 SebU COR A 1 8.697 13.346 19.662 1.00 0.00 SE2-
HETATM 97 SebV COR A 1 19.748 12.927 7.553 1.00 0.00 SE2-
HETATM 98 SebW COR A 1 17.259 16.946 7.972 1.00 0.00 SE2-
HETATM 99 SebX COR A 1 14.642 20.908 8.077 1.00 0.00 SE2-
HETATM 100 SebY COR A 1 19.761 10.170 10.895 1.00 0.00 SE2-
HETATM 101 SebZ COR A 1 12.363 21.772 11.635 1.00 0.00 SE2-
HETATM 102 Secd COR A 1 19.651 7.348 14.171 1.00 0.00 SE2-
HETATM 103 Sece COR A 1 9.957 22.568 15.174 1.00 0.00 SE2-
HETATM 104 Secf COR A 1 17.240 8.396 18.058 1.00 0.00 SE2-
HETATM 105 Secg COR A 1 10.369 19.598 18.827 1.00 0.00 SE2-
HETATM 106 Sech COR A 1 14.584 9.214 21.921 1.00 0.00 SE2-
HETATM 107 Seci COR A 1 12.339 12.877 22.161 1.00 0.00 SE2-
HETATM 108 Secj COR A 1 9.890 16.468 22.372 1.00 0.00 SE2-
HETATM 109 Seck COR A 1 20.927 16.472 10.502 1.00 0.00 SE2-
HETATM 110 Secl COR A 1 18.505 20.235 10.757 1.00 0.00 SE2-
HETATM 111 Secm COR A 1 20.833 13.678 13.862 1.00 0.00 SE2-
HETATM 112 Secn COR A 1 16.133 21.011 14.328 1.00 0.00 SE2-
HETATM 113 Seco COR A 1 20.867 10.853 17.191 1.00 0.00 SE2-
HETATM 114 Secp COR A 1 13.781 21.849 17.809 1.00 0.00 SE2-
HETATM 115 Secq COR A 1 18.492 11.718 20.874 1.00 0.00 SE2-
HETATM 116 Secr COR A 1 16.158 15.364 21.005 1.00 0.00 SE2-
HETATM 117 Secs COR A 1 13.776 18.730 21.156 1.00 0.00 SE2-
HETATM 118 Sect COR A 1 22.385 19.899 13.466 1.00 0.00 SE2-
HETATM 119 Secu COR A 1 22.365 17.079 16.747 1.00 0.00 SE2-
HETATM 120 Secv COR A 1 19.980 20.800 16.964 1.00 0.00 SE2-
HETATM 121 Secw COR A 1 22.292 14.364 20.112 1.00 0.00 SE2-
HETATM 122 Secx COR A 1 19.957 17.996 20.342 1.00 0.00 SE2-
HETATM 123 Secy COR A 1 17.612 21.644 20.484 1.00 0.00 SE2-
ATOM 124 Cab LIG A 2 13.359 23.387 22.474 1.00 0.00 C
HETATM 125 Oac LIG A 2 13.685 22.273 21.703 1.00 0.00 O1-
ATOM 126 Haf LIG A 2 12.611 23.100 23.242 1.00 0.00 H
ATOM 127 Hae LIG A 2 12.935 24.178 21.821 1.00 0.00 H
ATOM 128 Had LIG A 2 14.273 23.772 22.973 1.00 0.00 H
ATOM 129 Cab LIG A 3 16.504 24.961 10.916 1.00 0.00 C
HETATM 130 Oac LIG A 3 16.186 23.623 11.143 1.00 0.00 O1-
ATOM 131 Haf LIG A 3 16.915 25.075 9.892 1.00 0.00 H
ATOM 132 Hae LIG A 3 17.259 25.293 11.658 1.00 0.00 H
ATOM 133 Had LIG A 3 15.589 25.581 11.018 1.00 0.00 H
ATOM 134 Cab LIG A 4 16.445 12.666 25.469 1.00 0.00 C
HETATM 135 Oac LIG A 4 16.132 12.670 24.111 1.00 0.00 O1-
ATOM 136 Haf LIG A 4 16.818 11.662 25.760 1.00 0.00 H
ATOM 137 Hae LIG A 4 15.538 12.910 26.059 1.00 0.00 H
ATOM 138 Had LIG A 4 17.231 13.424 25.670 1.00 0.00 H
ATOM 139 Cab LIG A 5 7.608 8.124 9.552 1.00 0.00 C
HETATM 140 Oac LIG A 5 8.601 8.784 10.274 1.00 0.00 O1-
ATOM 141 Haf LIG A 5 8.056 7.272 8.999 1.00 0.00 H
ATOM 142 Hae LIG A 5 7.142 8.829 8.833 1.00 0.00 H
ATOM 143 Had LIG A 5 6.834 7.744 10.251 1.00 0.00 H
ATOM 144 Cab LIG A 6 17.434 25.457 16.782 1.00 0.00 C
HETATM 145 Oac LIG A 6 17.209 24.084 16.871 1.00 0.00 O1-
ATOM 146 Haf LIG A 6 18.514 25.644 16.604 1.00 0.00 H
ATOM 147 Hae LIG A 6 17.125 25.945 17.729 1.00 0.00 H
ATOM 148 Had LIG A 6 16.843 25.875 15.941 1.00 0.00 H
ATOM 149 Cab LIG A 7 13.539 4.971 18.953 1.00 0.00 C
HETATM 150 Oac LIG A 7 13.738 6.335 18.745 1.00 0.00 O1-
ATOM 151 Haf LIG A 7 14.182 4.627 19.790 1.00 0.00 H
ATOM 152 Hae LIG A 7 13.802 4.413 18.031 1.00 0.00 H
ATOM 153 Had LIG A 7 12.474 4.787 19.205 1.00 0.00 H
ATOM 154 Cab LIG A 8 12.157 11.490 4.972 1.00 0.00 C
HETATM 155 Oac LIG A 8 12.495 11.604 6.319 1.00 0.00 O1-
ATOM 156 Haf LIG A 8 11.488 12.328 4.685 1.00 0.00 H
ATOM 157 Hae LIG A 8 11.636 10.525 4.801 1.00 0.00 H
ATOM 158 Had LIG A 8 13.079 11.525 4.355 1.00 0.00 H
ATOM 159 Cab LIG A 9 4.361 14.275 16.879 1.00 0.00 C
HETATM 160 Oac LIG A 9 5.725 14.056 16.697 1.00 0.00 O1-
ATOM 161 Haf LIG A 9 4.042 15.146 16.270 1.00 0.00 H
ATOM 162 Hae LIG A 9 4.158 14.478 17.950 1.00 0.00 H
ATOM 163 Had LIG A 9 3.796 13.375 16.560 1.00 0.00 H
ATOM 164 Cab LIG A 10 24.291 9.799 13.569 1.00 0.00 C
HETATM 165 Oac LIG A 10 22.956 10.170 13.727 1.00 0.00 O1-
ATOM 166 Haf LIG A 10 24.498 9.614 12.494 1.00 0.00 H
ATOM 167 Hae LIG A 10 24.489 8.875 14.149 1.00 0.00 H
ATOM 168 Had LIG A 10 24.947 10.615 13.937 1.00 0.00 H
ATOM 169 Cab LIG A 11 11.926 4.774 12.802 1.00 0.00 C
HETATM 170 Oac LIG A 11 12.290 6.116 12.717 1.00 0.00 O1-
ATOM 171 Haf LIG A 11 12.357 4.218 11.943 1.00 0.00 H
ATOM 172 Hae LIG A 11 10.820 4.688 12.781 1.00 0.00 H
ATOM 173 Had LIG A 11 12.311 4.345 13.750 1.00 0.00 H
ATOM 174 Cab LIG A 12 13.592 17.262 4.390 1.00 0.00 C
HETATM 175 Oac LIG A 12 13.789 17.285 5.769 1.00 0.00 O1-
ATOM 176 Haf LIG A 12 14.039 18.170 3.936 1.00 0.00 H
ATOM 177 Hae LIG A 12 12.504 17.236 4.172 1.00 0.00 H
ATOM 178 Had LIG A 12 14.075 16.359 3.962 1.00 0.00 H
ATOM 179 Cab LIG A 13 25.482 15.685 12.711 1.00 0.00 C
HETATM 180 Oac LIG A 13 24.145 15.923 13.026 1.00 0.00 O1-
ATOM 181 Haf LIG A 13 25.882 16.538 12.125 1.00 0.00 H
ATOM 182 Hae LIG A 13 25.561 14.754 12.112 1.00 0.00 H
ATOM 183 Had LIG A 13 26.068 15.572 13.647 1.00 0.00 H
ATOM 184 Cab LIG A 14 5.612 20.137 16.628 1.00 0.00 C
HETATM 185 Oac LIG A 14 6.919 19.764 16.319 1.00 0.00 O1-
ATOM 186 Haf LIG A 14 5.602 21.187 16.989 1.00 0.00 H
ATOM 187 Hae LIG A 14 5.214 19.469 17.420 1.00 0.00 H
ATOM 188 Had LIG A 14 4.978 20.053 15.721 1.00 0.00 H
CONECT 124 125 126 127 128
CONECT 129 130 131 132 133
CONECT 134 135 136 137 138
CONECT 139 140 141 142 143
CONECT 144 145 146 147 148
CONECT 149 150 151 152 153
CONECT 154 155 156 157 158
CONECT 159 160 161 162 163
CONECT 164 165 166 167 168
CONECT 169 170 171 172 173
CONECT 174 175 176 177 178
CONECT 179 180 181 182 183
CONECT 184 185 186 187 188
END
Binary file modified tests/test_files/test_allignment.hdf5
Binary file not shown.
20 changes: 17 additions & 3 deletions tests/test_ligand_attach.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,22 +190,36 @@ def test_bonds(self, output: AllignmentTup) -> None:

class TestCoreAnchor:
PARAMS = {
"HCl": {"group": "[H]Cl", "group_idx": 0, "remove": 0}
"HCl": ("Cd68Se55_HCl.pdb", {"group": "[H]Cl", "group_idx": 0, "remove": 0}),
"formate": ("Cd68Cl26Se55__26_O=C[O-]@O2O3.pdb", {
"group": "[H]C([O-])=O",
"group_idx": [2, 3],
"remove": [0, 1, 2, 3],
"kind": "mean",
}),
"ethoxide": ("Cd68Cl26Se55__26_CC[O-]@O3.pdb", {
"group": "[O-]C([H])([H])C([H])([H])[H]",
"group_idx": 0,
"remove": [0, 1, 2, 3, 4, 5, 6, 7],
"kind": "first",
}),
}

@pytest.fixture(scope="class", name="output", params=PARAMS.items(), ids=PARAMS)
def run_cat(
self, request: "_pytest.fixtures.SubRequest"
) -> Generator[AllignmentTup, None, None]:
# Setup
name, kwargs = request.param # type: str, dict[str, Any]
name, (core, kwargs) = request.param # type: str, tuple[str, dict[str, Any]]
yaml_path = PATH / 'CAT_allignment.yaml'
with open(yaml_path, 'r') as f1:
arg = Settings(yaml.load(f1, Loader=yaml.FullLoader))

arg.path = PATH
arg.input_cores = ["Cd68Se55_HCl.pdb"]
arg.input_cores = [core]
arg.optional.core.anchor = kwargs
if name == "formate":
arg.optional.core.allignment = "anchor"
qd_df, _, _ = prep(arg)
qd = qd_df[MOL].iloc[0]

Expand Down

0 comments on commit e5c4ded

Please sign in to comment.