Skip to content

Commit 10c4c86

Browse files
authored
metalCoord standalone task (#57)
1 parent a16f616 commit 10c4c86

10 files changed

Lines changed: 398 additions & 61 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# CCP4i2 Changelog
22

3-
## [2.3.0] - 2025-05-12
3+
## [2.3.0] - 2025-05-13
44

55
- Added a Coot 1 task
6+
- Added a MetalCoord task
67
- Added performance testing to the i2run tests
78
- Fix to AUSPEX command line for Windows
89
- Fix for ASU contents view with QtGui/QtWidgets changes

core/CachedLookups.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@
152152
"buster",
153153
"coot_rsr_morph",
154154
"lorestr_i2",
155+
"metalCoord",
155156
"pairef",
156157
"pdb_redo_api",
157158
"sheetbend",
@@ -3073,7 +3074,7 @@
30733074
"0.1": {
30743075
"DESCRIPTION": null,
30753076
"INTERRUPTLABEL": null,
3076-
"MAINTAINER": "martin.maly@soton.ac.uk",
3077+
"MAINTAINER": "martin.maly@mrc-lmb.cam.ac.uk",
30773078
"TASKTITLE": null,
30783079
"class": "wrappers.metalCoord.script.metalCoordmetalCoord",
30793080
"clsModule": "wrappers.metalCoord.script.metalCoord",
@@ -4215,6 +4216,7 @@
42154216
"lorestr_i2": "qticons/lorestr_i2.png",
42164217
"matthews": "qticons/matthews.png",
42174218
"mergeMtz": "qticons/mergeMtz.png",
4219+
"metalCoord": "qticons/ccp4.png",
42184220
"model_building": "qticons/model_building.png",
42194221
"model_data_utility": "qticons/model_data_utility.png",
42204222
"modelcraft": "qticons/modelcraft.png",
@@ -5741,6 +5743,20 @@
57415743
"taskVersion": 0.1
57425744
}
57435745
},
5746+
"metalCoord": {
5747+
"0.0.0": {
5748+
"DESCRIPTION": "Generate restraints for metal-containing monomers",
5749+
"MAINTAINER": "Nobody",
5750+
"RANK": null,
5751+
"TASKTITLE": "MetalCoord",
5752+
"class": "wrappers.metalCoord.script.metalCoord_guiCmetalCoord_gui",
5753+
"clsModule": "wrappers.metalCoord.script.metalCoord_gui",
5754+
"clsName": "CmetalCoord_gui",
5755+
"shortTitle": "MetalCoord",
5756+
"taskName": "metalCoord",
5757+
"taskVersion": 1.0
5758+
}
5759+
},
57445760
"modelcraft": {
57455761
"0.0.0": {
57465762
"DESCRIPTION": "Automated model building of protein, nucleic acid and water",

core/version.params.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<function>PARAMS</function>
66
<pluginName>ccp4i2</pluginName>
77
<userId></userId>
8-
<creationTime>12/May/2025</creationTime>
8+
<creationTime>13/May/2025</creationTime>
99
<ccp4iVersion>2.3.0</ccp4iVersion>
1010
<pluginVersion></pluginVersion>
1111
</ccp4i2_header>

pipelines/servalcat_pipe/script/servalcat_pipe.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def executeMetalCoords(self):
177177
self.container.outputData.METALCOORD_RESTRAINTS.annotation = 'Restraints for metal sites'
178178
if os.path.isfile(self.outputRestraintsMmcifPath) and stPath:
179179
self.container.outputData.METALCOORD_XYZ.setFullPath(self.outputRestraintsMmcifPath)
180-
self.container.outputData.METALCOORD_XYZ.annotation = 'Input structure with links from MetalCoord'
180+
self.container.outputData.METALCOORD_XYZ.annotation = 'Structure model with links from MetalCoord (mmCIF format)'
181181

182182
def executeMetalCoord(self, ligand_code):
183183
self.metalCoordPlugin = self.makePluginObject('metalCoord')

test/i2run/test_metalcoord.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from pathlib import Path
2+
from gemmi import read_structure
3+
from pytest import fixture
4+
from .urls import pdbe_mmcif
5+
from .utils import download, i2run
6+
7+
8+
# TODO: Test long ligand names
9+
10+
11+
@fixture(scope="module", name="cif")
12+
def cif_fixture():
13+
with download(pdbe_mmcif("4dl8")) as path:
14+
yield path
15+
16+
17+
def test_metalcoord(cif):
18+
args = ["metalCoord"]
19+
args += ["--XYZIN", cif]
20+
args += ["--LIGAND_CODE", "AF3"]
21+
args += ["--KEEP_LINKS", "True"]
22+
args += ["--MAXIMUM_COORDINATION_NUMBER", "5"]
23+
args += ["--COORD05", "trigonal-bipyramid"]
24+
args += ["--MINIMUM_SAMPLE_SIZE", "10"]
25+
args += ["--DISTANCE_THRESHOLD", "0.45"]
26+
args += ["--PROCRUSTES_DISTANCE_THRESHOLD", "0.2"]
27+
with i2run(args) as job:
28+
for ext in ("_coot.txt", ".mmcif", ".params", ".pdb", ".txt"):
29+
assert Path(job / f"AF3_restraints{ext}").exists()
30+
read_structure(str(job / "AF3_restraints.mmcif"))
31+
read_structure(str(job / "AF3_restraints.pdb"))

wrappers/metalCoord/script/metalCoord.def.xml

Lines changed: 160 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<userId>martinmaly</userId>
66
<creationTime>16:00 16/Oct/24</creationTime>
77
<pluginVersion></pluginVersion>
8-
<ccp4iVersion>0.0.1</ccp4iVersion>
8+
<ccp4iVersion>0.2</ccp4iVersion>
99
<pluginName>metalCoord</pluginName>
1010
<pluginTitle>metalCoord: restraints for metal atoms and ions</pluginTitle>
1111
<jobId/>
@@ -42,8 +42,12 @@
4242
<content id="JSON">
4343
<className>CDataFile</className>
4444
<qualifiers>
45+
<fileExtensions>json</fileExtensions>
4546
</qualifiers>
4647
</content>
48+
<content id="XYZOUT">
49+
<className>CPdbDataFile</className>
50+
</content>
4751
</container>
4852

4953
<container id="controlParameters">
@@ -68,9 +72,13 @@
6872
Maximum coordination number.
6973
-->
7074
<content id="MAXIMUM_COORDINATION_NUMBER">
71-
<className>CInt</className>
75+
<className>CString</className>
7276
<qualifiers>
73-
<guiLabel>Maximum coordination number</guiLabel>
77+
<guiLabel>Coordination number</guiLabel>
78+
<onlyEnumerators>True</onlyEnumerators>
79+
<enumerators>auto,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,24</enumerators>
80+
<menuText>auto,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,24</menuText>
81+
<default>auto</default>
7482
</qualifiers>
7583
</content>
7684
<content id="MINIMUM_SAMPLE_SIZE">
@@ -138,5 +146,154 @@
138146
</qualifiers>
139147
</content>
140148
</container>
149+
150+
<!-- This section is generated using util1_get_coord_data.sh and util1_get_coord_data.sh -->
151+
<container id="coordination">
152+
<content id="COORD02">
153+
<className>CString</className>
154+
<qualifiers>
155+
<onlyEnumerators>True</onlyEnumerators>
156+
<enumerators>auto,linear,bent</enumerators>
157+
<menuText>auto,linear (88.3 %),bent (11.7 %)</menuText>
158+
<default>auto</default>
159+
</qualifiers>
160+
</content>
161+
<content id="COORD03">
162+
<className>CString</className>
163+
<qualifiers>
164+
<onlyEnumerators>True</onlyEnumerators>
165+
<enumerators>auto,trigonal-planar,pyramid,t-shape</enumerators>
166+
<menuText>auto,trigonal-planar (49.7 %),pyramid (25.7 %),t-shape (24.7 %)</menuText>
167+
<default>auto</default>
168+
</qualifiers>
169+
</content>
170+
<content id="COORD04">
171+
<className>CString</className>
172+
<qualifiers>
173+
<onlyEnumerators>True</onlyEnumerators>
174+
<enumerators>auto,square-planar,tetrahedral,trigonal-pyramid,square-non-planar,bicapped-linear,pyramid</enumerators>
175+
<menuText>auto,square-planar (50.3 %),tetrahedral (43.7 %),trigonal-pyramid (5.6 %),square-non-planar (0.2 %),bicapped-linear (0.1 %),pyramid (0.0 %)</menuText>
176+
<default>auto</default>
177+
</qualifiers>
178+
</content>
179+
<content id="COORD05">
180+
<className>CString</className>
181+
<qualifiers>
182+
<onlyEnumerators>True</onlyEnumerators>
183+
<enumerators>auto,square-pyramid,trigonal-bipyramid,tricapped-trigonal-planar,bicapped-trigonal-planar</enumerators>
184+
<menuText>auto,square-pyramid (61.9 %),trigonal-bipyramid (35.7 %),tricapped-trigonal-planar (2.1 %),bicapped-trigonal-planar (0.4 %)</menuText>
185+
<default>auto</default>
186+
</qualifiers>
187+
</content>
188+
<content id="COORD06">
189+
<className>CString</className>
190+
<qualifiers>
191+
<onlyEnumerators>True</onlyEnumerators>
192+
<enumerators>auto,octahedral,bicapped-square-planar,trigonal-prism,sandwich_5_1,sandwich_4_2,sandwich_4h_2,hexagonal-planar</enumerators>
193+
<menuText>auto,octahedral (97.0 %),bicapped-square-planar (1.7 %),trigonal-prism (1.1 %),sandwich_5_1 (0.1 %),sandwich_4_2 (0.0 %),sandwich_4h_2 (0.0 %),hexagonal-planar (0.0 %)</menuText>
194+
<default>auto</default>
195+
</qualifiers>
196+
</content>
197+
<content id="COORD07">
198+
<className>CString</className>
199+
<qualifiers>
200+
<onlyEnumerators>True</onlyEnumerators>
201+
<enumerators>auto,sandwich_5_2,pentagonal-bipyramid,sandwich_4_3,sandwich_6_1,octahedral</enumerators>
202+
<menuText>auto,sandwich_5_2 (53.4 %),pentagonal-bipyramid (41.8 %),sandwich_4_3 (3.1 %),sandwich_6_1 (1.5 %),octahedral (0.1 %)</menuText>
203+
<default>auto</default>
204+
</qualifiers>
205+
</content>
206+
<content id="COORD08">
207+
<className>CString</className>
208+
<qualifiers>
209+
<onlyEnumerators>True</onlyEnumerators>
210+
<enumerators>auto,sandwich_5_3,square-antiprismatic,dodecahedral,trigonal-prism2,hexagonal-bipyramid,cubic,sandwich_6_2,bicapped-octahedral,sandwich_4h_4,sandwich_7_1</enumerators>
211+
<menuText>auto,sandwich_5_3 (53.1 %),square-antiprismatic (14.7 %),dodecahedral (14.2 %),trigonal-prism2 (8.2 %),hexagonal-bipyramid (4.2 %),cubic (2.0 %),sandwich_6_2 (2.0 %),bicapped-octahedral (1.5 %),sandwich_4h_4 (0.0 %),sandwich_7_1 (0.0 %)</menuText>
212+
<default>auto</default>
213+
</qualifiers>
214+
</content>
215+
<content id="COORD09">
216+
<className>CString</className>
217+
<qualifiers>
218+
<onlyEnumerators>True</onlyEnumerators>
219+
<enumerators>auto,sandwich_6_3,sandwich_5_4,tricapped-trigonal-prismatic,sandwich_7_2</enumerators>
220+
<menuText>auto,sandwich_6_3 (89.6 %),sandwich_5_4 (9.9 %),tricapped-trigonal-prismatic (0.4 %),sandwich_7_2 (0.2 %)</menuText>
221+
<default>auto</default>
222+
</qualifiers>
223+
</content>
224+
<content id="COORD10">
225+
<className>CString</className>
226+
<qualifiers>
227+
<onlyEnumerators>True</onlyEnumerators>
228+
<enumerators>auto,sandwich_5_5,sandwich_7_3,pentagonal-antiprismatic,sandwich_6_4</enumerators>
229+
<menuText>auto,sandwich_5_5 (99.1 %),sandwich_7_3 (0.4 %),pentagonal-antiprismatic (0.3 %),sandwich_6_4 (0.2 %)</menuText>
230+
<default>auto</default>
231+
</qualifiers>
232+
</content>
233+
<content id="COORD11">
234+
<className>CString</className>
235+
<qualifiers>
236+
<onlyEnumerators>True</onlyEnumerators>
237+
<enumerators>auto,sandwich_6_5,sandwich_8_3</enumerators>
238+
<menuText>auto,sandwich_6_5 (93.8 %),sandwich_8_3 (6.2 %)</menuText>
239+
<default>auto</default>
240+
</qualifiers>
241+
</content>
242+
<content id="COORD12">
243+
<className>CString</className>
244+
<qualifiers>
245+
<onlyEnumerators>True</onlyEnumerators>
246+
<enumerators>auto,sandwich_7_5,paired-octahedral,sandwich_8_4</enumerators>
247+
<menuText>auto,sandwich_7_5 (68.4 %),paired-octahedral (26.6 %),sandwich_8_4 (5.1 %)</menuText>
248+
<default>auto</default>
249+
</qualifiers>
250+
</content>
251+
<content id="COORD13">
252+
<className>CString</className>
253+
<qualifiers>
254+
<onlyEnumerators>True</onlyEnumerators>
255+
<enumerators>auto,sandwich_8_5</enumerators>
256+
<menuText>auto,sandwich_8_5 (100.0 %)</menuText>
257+
<default>auto</default>
258+
</qualifiers>
259+
</content>
260+
<content id="COORD15">
261+
<className>CString</className>
262+
<qualifiers>
263+
<onlyEnumerators>True</onlyEnumerators>
264+
<enumerators>auto,penta-trigonal-planar</enumerators>
265+
<menuText>auto,penta-trigonal-planar (100.0 %)</menuText>
266+
<default>auto</default>
267+
</qualifiers>
268+
</content>
269+
<content id="COORD16">
270+
<className>CString</className>
271+
<qualifiers>
272+
<onlyEnumerators>True</onlyEnumerators>
273+
<enumerators>auto,sandwich_8_8,penta-trigonal-planar_i</enumerators>
274+
<menuText>auto,sandwich_8_8 (70.2 %),penta-trigonal-planar_i (29.8 %)</menuText>
275+
<default>auto</default>
276+
</qualifiers>
277+
</content>
278+
<content id="COORD17">
279+
<className>CString</className>
280+
<qualifiers>
281+
<onlyEnumerators>True</onlyEnumerators>
282+
<enumerators>auto,penta-trigonal-planar_i_i</enumerators>
283+
<menuText>auto,penta-trigonal-planar_i_i (100.0 %)</menuText>
284+
<default>auto</default>
285+
</qualifiers>
286+
</content>
287+
<content id="COORD24">
288+
<className>CString</className>
289+
<qualifiers>
290+
<onlyEnumerators>True</onlyEnumerators>
291+
<enumerators>auto,truncated-cuboctahedron</enumerators>
292+
<menuText>auto,truncated-cuboctahedron (100.0 %)</menuText>
293+
<default>auto</default>
294+
</qualifiers>
295+
</content>
296+
</container>
297+
141298
</ccp4i2_body>
142299
</ccp4i2>

0 commit comments

Comments
 (0)