modelcraft 5.0.2__py3-none-any.whl → 6.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- modelcraft/__init__.py +16 -31
- modelcraft/__main__.py +0 -1
- modelcraft/arguments.py +35 -7
- modelcraft/combine.py +22 -41
- modelcraft/contents.py +188 -164
- modelcraft/environ.py +0 -7
- modelcraft/geometry.py +39 -27
- modelcraft/job.py +6 -5
- modelcraft/jobs/acedrg.py +2 -0
- modelcraft/jobs/buccaneer.py +22 -4
- modelcraft/jobs/comit.py +2 -0
- modelcraft/jobs/ctruncate.py +3 -1
- modelcraft/jobs/emda.py +2 -0
- modelcraft/jobs/findwaters.py +2 -0
- modelcraft/jobs/freerflag.py +2 -0
- modelcraft/jobs/libg.py +2 -0
- modelcraft/jobs/molrep.py +2 -0
- modelcraft/jobs/nautilus.py +28 -14
- modelcraft/jobs/nucleofind.py +88 -0
- modelcraft/jobs/parrot.py +13 -2
- modelcraft/jobs/phasematch.py +2 -1
- modelcraft/jobs/refmac.py +3 -1
- modelcraft/jobs/servalcat.py +38 -4
- modelcraft/jobs/sheetbend.py +2 -0
- modelcraft/modelcraftem.py +49 -6
- modelcraft/modelcraftxray.py +90 -42
- modelcraft/monlib.py +55 -52
- modelcraft/pdbe.py +54 -0
- modelcraft/pipeline.py +1 -1
- modelcraft/prune.py +69 -0
- modelcraft/reflections.py +11 -1
- modelcraft/scripts/contents.py +5 -215
- modelcraft/scripts/copies.py +26 -17
- modelcraft/scripts/modelcraft.py +1 -0
- modelcraft/scripts/sidechains.py +141 -0
- modelcraft/scripts/validate.py +81 -0
- modelcraft/sequence.py +106 -0
- modelcraft/solvent.py +42 -113
- modelcraft/structure.py +64 -41
- modelcraft/tests/ccp4/__init__.py +7 -11
- modelcraft/tests/ccp4/test_acedrg.py +2 -0
- modelcraft/tests/ccp4/test_arguments.py +3 -0
- modelcraft/tests/ccp4/test_buccaneer.py +3 -2
- modelcraft/tests/ccp4/test_cell.py +4 -1
- modelcraft/tests/ccp4/test_comit.py +2 -0
- modelcraft/tests/ccp4/test_contents.py +99 -17
- modelcraft/tests/ccp4/test_copies.py +1 -0
- modelcraft/tests/ccp4/test_ctruncate.py +2 -0
- modelcraft/tests/ccp4/test_findwaters.py +2 -0
- modelcraft/tests/ccp4/test_freerflag.py +2 -0
- modelcraft/tests/ccp4/test_libg.py +1 -0
- modelcraft/tests/ccp4/test_molrep.py +3 -0
- modelcraft/tests/ccp4/test_monlib.py +75 -45
- modelcraft/tests/ccp4/test_nautilus.py +5 -3
- modelcraft/tests/ccp4/test_nucleofind.py +62 -0
- modelcraft/tests/ccp4/test_parrot.py +3 -1
- modelcraft/tests/ccp4/test_phasematch.py +2 -0
- modelcraft/tests/ccp4/test_prune.py +17 -0
- modelcraft/tests/ccp4/test_reflections.py +110 -1
- modelcraft/tests/ccp4/test_refmac.py +3 -0
- modelcraft/tests/{unittests/test_contents.py → ccp4/test_sequence.py} +5 -12
- modelcraft/tests/ccp4/test_servalcat.py +52 -0
- modelcraft/tests/ccp4/test_sheetbend.py +4 -3
- modelcraft/tests/ccp4/test_sidechains.py +25 -0
- modelcraft/tests/ccp4/test_solvent.py +12 -26
- modelcraft/tests/ccp4/test_structure.py +1 -0
- modelcraft/tests/ccp4/test_validation.py +19 -0
- modelcraft/tests/ccp4/test_xray.py +12 -6
- modelcraft/tests/ccpem/test_em.py +3 -0
- modelcraft/tests/ccpem/test_emda.py +2 -0
- modelcraft/tests/ccpem/test_refmac.py +1 -0
- modelcraft/tests/ccpem/test_servalcat.py +4 -3
- modelcraft/utils.py +16 -4
- modelcraft/validation.py +101 -0
- modelcraft-6.0.0.dist-info/METADATA +76 -0
- modelcraft-6.0.0.dist-info/RECORD +85 -0
- {modelcraft-5.0.2.dist-info → modelcraft-6.0.0.dist-info}/WHEEL +1 -1
- {modelcraft-5.0.2.dist-info → modelcraft-6.0.0.dist-info}/entry_points.txt +2 -0
- modelcraft/coot/prune.py +0 -1085
- modelcraft/coot/sidechains.py +0 -68
- modelcraft/jobs/acorn.py +0 -114
- modelcraft/jobs/coot.py +0 -104
- modelcraft/tests/ccp4/test_coot.py +0 -29
- modelcraft/tests/ccp4/test_geometry.py +0 -20
- modelcraft/tests/unittests/__init__.py +0 -0
- modelcraft/tests/unittests/test_reflections.py +0 -101
- modelcraft-5.0.2.dist-info/LICENSE +0 -504
- modelcraft-5.0.2.dist-info/METADATA +0 -48
- modelcraft-5.0.2.dist-info/RECORD +0 -82
- {modelcraft-5.0.2.dist-info → modelcraft-6.0.0.dist-info}/top_level.txt +0 -0
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
|
+
|
|
3
4
|
import gemmi
|
|
4
5
|
import pytest
|
|
5
|
-
|
|
6
|
+
|
|
6
7
|
from modelcraft.reflections import write_mtz
|
|
8
|
+
from modelcraft.scripts.modelcraft import main
|
|
7
9
|
from modelcraft.structure import contains_residue, read_structure
|
|
10
|
+
|
|
8
11
|
from . import (
|
|
9
12
|
ccp4_path,
|
|
10
13
|
in_temp_directory,
|
|
11
14
|
insulin_contents,
|
|
12
|
-
insulin_fsigf,
|
|
13
15
|
insulin_freer,
|
|
16
|
+
insulin_fsigf,
|
|
14
17
|
insulin_refmac,
|
|
15
18
|
pdb1rxf_contents,
|
|
16
19
|
)
|
|
@@ -33,14 +36,15 @@ def test_insulin_from_phases():
|
|
|
33
36
|
args += ["--overwrite-directory"]
|
|
34
37
|
with pytest.raises(SystemExit):
|
|
35
38
|
main(args)
|
|
36
|
-
|
|
39
|
+
report_path = os.path.join("my_modelcraft_dir", "modelcraft.json")
|
|
40
|
+
with open(report_path, encoding="utf-8") as report_file:
|
|
37
41
|
report = json.load(report_file)
|
|
38
42
|
assert report["seconds"]["total"] > 0
|
|
39
43
|
assert report["termination_reason"] == "Normal"
|
|
40
44
|
mtz_path = os.path.join("my_modelcraft_dir", "modelcraft.mtz")
|
|
41
45
|
mtz = gemmi.read_mtz_file(mtz_path)
|
|
42
46
|
columns = set(mtz.column_labels())
|
|
43
|
-
expected = {"FWT", "DELFWT", "
|
|
47
|
+
expected = {"FWT", "DELFWT", "FC_ALL", "FOM", "HLACOMB"}
|
|
44
48
|
assert expected.issubset(columns)
|
|
45
49
|
|
|
46
50
|
|
|
@@ -59,7 +63,8 @@ def test_1rxf_from_model():
|
|
|
59
63
|
args += ["--cycles", "2"]
|
|
60
64
|
with pytest.raises(SystemExit):
|
|
61
65
|
main(args)
|
|
62
|
-
|
|
66
|
+
report_path = os.path.join("modelcraft", "modelcraft.json")
|
|
67
|
+
with open(report_path, encoding="utf-8") as report_file:
|
|
63
68
|
report = json.load(report_file)
|
|
64
69
|
assert report["seconds"]["total"] > 0
|
|
65
70
|
assert report["termination_reason"] == "Normal"
|
|
@@ -80,7 +85,8 @@ def test_toxd():
|
|
|
80
85
|
args += ["--cycles", "1"]
|
|
81
86
|
with pytest.raises(SystemExit):
|
|
82
87
|
main(args)
|
|
83
|
-
|
|
88
|
+
report_path = os.path.join("modelcraft", "modelcraft.json")
|
|
89
|
+
with open(report_path, encoding="utf-8") as report_file:
|
|
84
90
|
report = json.load(report_file)
|
|
85
91
|
assert report["seconds"]["total"] > 0
|
|
86
92
|
assert report["termination_reason"] == "Normal"
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
from modelcraft.jobs.servalcat import (
|
|
2
|
+
ServalcatFsc,
|
|
2
3
|
ServalcatNemap,
|
|
3
|
-
ServalcatTrim,
|
|
4
4
|
ServalcatRefine,
|
|
5
|
-
|
|
5
|
+
ServalcatTrim,
|
|
6
6
|
)
|
|
7
7
|
from modelcraft.maps import read_map
|
|
8
8
|
from modelcraft.structure import read_structure
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
from . import density_path, halfmap1_path, halfmap2_path, mask_path, structure_path
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def test_servalcat_nemap():
|
modelcraft/utils.py
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
from random import choice
|
|
2
|
+
from string import ascii_letters, digits
|
|
2
3
|
|
|
4
|
+
import numpy as np
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
def modified_zscore(a) -> np.ndarray:
|
|
8
|
+
"Z-score using median and median absolute deviation"
|
|
9
|
+
median = np.median(a)
|
|
10
|
+
deviations = a - median
|
|
11
|
+
mad = np.median(np.abs(deviations))
|
|
12
|
+
return np.zeros_like(a) if mad == 0 else 0.67449 * deviations / mad
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def puid(length: int = 10) -> str:
|
|
16
|
+
"Probably unique identifier"
|
|
17
|
+
chars = ascii_letters + digits
|
|
18
|
+
return "".join(choice(chars) for _ in range(length))
|
modelcraft/validation.py
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
from collections import defaultdict
|
|
2
|
+
|
|
3
|
+
import gemmi
|
|
4
|
+
import numpy as np
|
|
5
|
+
import pandas as pd
|
|
6
|
+
|
|
7
|
+
from .geometry import per_residue_geometry_rmsz
|
|
8
|
+
from .jobs.refmac import RefmacResult
|
|
9
|
+
from .monlib import MonLib
|
|
10
|
+
from .reflections import DataItem
|
|
11
|
+
from .utils import modified_zscore
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def validate(
|
|
15
|
+
structure: gemmi.Structure,
|
|
16
|
+
fphi_best: DataItem,
|
|
17
|
+
fphi_diff: DataItem,
|
|
18
|
+
fphi_calc: DataItem,
|
|
19
|
+
monlib: MonLib,
|
|
20
|
+
model_index: int = 0,
|
|
21
|
+
) -> pd.DataFrame:
|
|
22
|
+
best_map = fphi_best.map(spacing=1.0)
|
|
23
|
+
diff_map = fphi_diff.map(size=best_map.shape)
|
|
24
|
+
calc_map = fphi_calc.map(size=best_map.shape)
|
|
25
|
+
|
|
26
|
+
bfac = _bfac(structure[model_index])
|
|
27
|
+
rscc, diff = _rscc_diff(structure, best_map, diff_map, calc_map, model_index)
|
|
28
|
+
geom = per_residue_geometry_rmsz(structure, monlib, model_index)
|
|
29
|
+
|
|
30
|
+
data = {
|
|
31
|
+
"Chain": [],
|
|
32
|
+
"SeqId": [],
|
|
33
|
+
"Name": [],
|
|
34
|
+
"BFac": [],
|
|
35
|
+
"RSCC": [],
|
|
36
|
+
"Diff": [],
|
|
37
|
+
"Geom": [],
|
|
38
|
+
}
|
|
39
|
+
for chain in structure[model_index]:
|
|
40
|
+
for residue in chain:
|
|
41
|
+
if monlib.is_protein(residue.name):
|
|
42
|
+
key = (chain.name, str(residue.seqid))
|
|
43
|
+
data["Chain"].append(chain.name)
|
|
44
|
+
data["SeqId"].append(str(residue.seqid))
|
|
45
|
+
data["Name"].append(residue.name)
|
|
46
|
+
data["BFac"].append(bfac[key])
|
|
47
|
+
data["RSCC"].append(rscc[key])
|
|
48
|
+
data["Diff"].append(diff[key])
|
|
49
|
+
data["Geom"].append(geom[key])
|
|
50
|
+
|
|
51
|
+
df = pd.DataFrame(data)
|
|
52
|
+
df["BFac"] = -modified_zscore(df["BFac"])
|
|
53
|
+
df["RSCC"] = modified_zscore(df["RSCC"])
|
|
54
|
+
df["Diff"] = -modified_zscore(df["Diff"])
|
|
55
|
+
df["Geom"] = -modified_zscore(df["Geom"])
|
|
56
|
+
density_score = (df["BFac"] + df["RSCC"] + df["Diff"]) / 3
|
|
57
|
+
df["Score"] = modified_zscore((density_score + df["Geom"]) / 2)
|
|
58
|
+
return df
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def validate_refmac(result: RefmacResult, monlib: MonLib) -> pd.DataFrame:
|
|
62
|
+
return validate(
|
|
63
|
+
result.structure, result.fphi_best, result.fphi_diff, result.fphi_calc, monlib
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _bfac(model: gemmi.Model) -> dict:
|
|
68
|
+
return {
|
|
69
|
+
(chain.name, str(residue.seqid)): np.mean([a.b_iso for a in residue])
|
|
70
|
+
for chain in model
|
|
71
|
+
for residue in chain
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _rscc_diff(
|
|
76
|
+
structure: gemmi.Structure,
|
|
77
|
+
best_map: gemmi.FloatGrid,
|
|
78
|
+
diff_map: gemmi.FloatGrid,
|
|
79
|
+
calc_map: gemmi.FloatGrid,
|
|
80
|
+
model_index: int,
|
|
81
|
+
) -> dict:
|
|
82
|
+
search = gemmi.NeighborSearch(structure, max_radius=3, model_index=model_index)
|
|
83
|
+
search.populate(include_h=False)
|
|
84
|
+
best_values = defaultdict(list)
|
|
85
|
+
diff_values = defaultdict(list)
|
|
86
|
+
calc_values = defaultdict(list)
|
|
87
|
+
for point in best_map.masked_asu():
|
|
88
|
+
position = best_map.point_to_position(point)
|
|
89
|
+
mark = search.find_nearest_atom(position, radius=3)
|
|
90
|
+
if mark is not None:
|
|
91
|
+
cra = mark.to_cra(structure[model_index])
|
|
92
|
+
key = (cra.chain.name, str(cra.residue.seqid))
|
|
93
|
+
best_values[key].append(point.value)
|
|
94
|
+
diff_values[key].append(diff_map.get_value(point.u, point.v, point.w))
|
|
95
|
+
calc_values[key].append(calc_map.get_value(point.u, point.v, point.w))
|
|
96
|
+
rscc = {}
|
|
97
|
+
diff = {}
|
|
98
|
+
for key, best_value in best_values.items():
|
|
99
|
+
rscc[key] = np.corrcoef(best_value, calc_values[key])[0, 1]
|
|
100
|
+
diff[key] = np.sqrt(np.mean(np.square(diff_values[key])))
|
|
101
|
+
return rscc, diff
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: modelcraft
|
|
3
|
+
Version: 6.0.0
|
|
4
|
+
Summary: Automated model-building pipeline for X-ray crystallography and cryo-EM
|
|
5
|
+
Author-email: Paul Bond <paul.bond@york.ac.uk>
|
|
6
|
+
Maintainer-email: Paul Bond <paul.bond@york.ac.uk>
|
|
7
|
+
Project-URL: Source, https://github.com/paulsbond/modelcraft
|
|
8
|
+
Project-URL: Issues, https://github.com/paulsbond/modelcraft/issues
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Requires-Python: >=3.9
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
Requires-Dist: gemmi>=0.5.5
|
|
16
|
+
Requires-Dist: numpy
|
|
17
|
+
Requires-Dist: pandas
|
|
18
|
+
Requires-Dist: requests
|
|
19
|
+
Requires-Dist: scipy
|
|
20
|
+
Requires-Dist: tabulate
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
# ModelCraft
|
|
25
|
+
|
|
26
|
+
ModelCraft is an automated model-building pipeline
|
|
27
|
+
that builds proteins and nucleic acids
|
|
28
|
+
into X-ray crystallography and cryo-EM maps.
|
|
29
|
+
It combines the previous Buccaneer and Nautilus pipelines and adds new steps
|
|
30
|
+
for density modification, refinement, validation and pruning.
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
ModelCraft is distributed with CCP4.
|
|
35
|
+
Please obtain the latest version from the
|
|
36
|
+
[CCP4 download page](https://www.ccp4.ac.uk/download).
|
|
37
|
+
|
|
38
|
+
## Graphical interfaces
|
|
39
|
+
|
|
40
|
+
For X-ray crystallography, ModelCraft can be used through
|
|
41
|
+
[CCP4i2](https://ccp4i2.gitlab.io/rstdocs/tasks/modelcraft/index.html) or
|
|
42
|
+
[CCP4 Cloud](https://cloud.ccp4.ac.uk/manuals/html-taskref/doc.task.ModelCraft.html).
|
|
43
|
+
For cryo-EM, it is available in
|
|
44
|
+
[CCP-EM Doppio](https://www.ccpem.ac.uk/docs/doppio/user_guide.html).
|
|
45
|
+
|
|
46
|
+
## Command-line interface
|
|
47
|
+
|
|
48
|
+
The first argument must be either
|
|
49
|
+
`xray` for X-ray crystallography or `em` for cryo-EM SPA.
|
|
50
|
+
The command line documentation has detailed information on individual arguments.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
modelcraft xray --help
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
modelcraft em --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Links
|
|
61
|
+
|
|
62
|
+
- [Source (latest)](https://github.com/paulsbond/modelcraft)
|
|
63
|
+
- [Source (releases)](https://github.com/paulsbond/modelcraft/releases)
|
|
64
|
+
- [Issues (e.g. bugs and feature requests)](https://github.com/paulsbond/modelcraft/issues)
|
|
65
|
+
- [PyPI (Python Package Index)](https://pypi.org/project/modelcraft)
|
|
66
|
+
|
|
67
|
+
## Citations
|
|
68
|
+
|
|
69
|
+
- [ModelCraft](https://doi.org/10.1107/S2059798322007732)
|
|
70
|
+
- [Buccaneer](https://doi.org/10.1107/S0907444906022116)
|
|
71
|
+
- [EMDA](https://doi.org/10.1016/j.jsb.2021.107826)
|
|
72
|
+
- [Nautilus](https://doi.org/10.1107/S2052252514019290)
|
|
73
|
+
- [Parrot](https://doi.org/10.1107/S090744490903947X)
|
|
74
|
+
- [Refmac](https://doi.org/10.1107/S2059798318000979)
|
|
75
|
+
- [Servalcat](https://doi.org/10.1107/S2059798321009475)
|
|
76
|
+
- [Sheetbend](https://doi.org/10.1107/S2059798320013170)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
modelcraft/__init__.py,sha256=Gz98tuLl0rUZuHLo9yDTc7nNbg7sDfxaJdotFGScnCs,1637
|
|
2
|
+
modelcraft/__main__.py,sha256=Uq-mykPdxXcVx0DK9hVbIZZoICcKCyk01Vnp6T7sqE0,76
|
|
3
|
+
modelcraft/arguments.py,sha256=QSL2fYYSAk7oIlCka6VQqhVbGsnMNLkmtyfUw14MbW0,16395
|
|
4
|
+
modelcraft/cell.py,sha256=dReWECZKuyZGSfR-MmumoD7qkrBiWM6GlaGpguDgU14,2025
|
|
5
|
+
modelcraft/combine.py,sha256=cSixPr-JJBZb-F6OfMfvYDf5sddWeoTREH0IwNrO2UE,4302
|
|
6
|
+
modelcraft/contents.py,sha256=r65m9Zg7t-m4lCKrZv9qSADKu5C2uyAjP-7qgZPsgX0,13074
|
|
7
|
+
modelcraft/environ.py,sha256=ZYVfPUUIW-JH9pGcN9jyyHdyJU8Bf0dU586MULDhOT4,257
|
|
8
|
+
modelcraft/geometry.py,sha256=sdCqeoohGgE4sFBicLR2d77nchyJSSmVzOeqUt4Tr_4,1575
|
|
9
|
+
modelcraft/job.py,sha256=XnIQyHKEt17xSEf12tP4IxxbWEg42A93XG9yhsoBUTM,4149
|
|
10
|
+
modelcraft/maps.py,sha256=Lyv3YjKNdUgi6vaLmQ8CcZFKq39EPL4NDC5qO_kCd0A,354
|
|
11
|
+
modelcraft/modelcraftem.py,sha256=Ru4sjfERIdOENIQDYwzyh2dnL84rlo3oH5ZSq2-MfdE,7559
|
|
12
|
+
modelcraft/modelcraftxray.py,sha256=eKwRVBouQfVreHvXOgc2hW5wsBB2GvN2E9ST6LEZsK8,15061
|
|
13
|
+
modelcraft/monlib.py,sha256=jkfaYZl87HDaQyKUkw51LTAd5dSGQ2qRF1zox6dP5C8,1869
|
|
14
|
+
modelcraft/pdbe.py,sha256=mbTfM9a7txuvdfqoxOLrsIQuTmH03eid7Hw1sP_o8DE,1793
|
|
15
|
+
modelcraft/pipeline.py,sha256=7DbEFwxOsMTZH14O6YFG9S0wbBBiuVkwVXMfS7weyt8,2048
|
|
16
|
+
modelcraft/prune.py,sha256=2ap4Aw43R8r4s_5CP71g1kO93bI_3a0A-9bEZqnldPI,2351
|
|
17
|
+
modelcraft/reflections.py,sha256=041O_mKSZZ6Y-_ltsrPt7F3u7yLMV-gXLMZYmkffSMs,6694
|
|
18
|
+
modelcraft/sequence.py,sha256=xix6Q48_NG7CgA0HcogTk3eGnpteN_C4lzOGAZxgEVs,2333
|
|
19
|
+
modelcraft/solvent.py,sha256=3jUl7wU0N7glOHdBtFKufP9br1ceFE6Z4bka3OQT7v0,4052
|
|
20
|
+
modelcraft/structure.py,sha256=hrXF14yuNyGBEFCyGAPOHQ5PaAoovmfDfviMKaLWqqY,4760
|
|
21
|
+
modelcraft/utils.py,sha256=equdkNLiQnO6lubU32JGtU6qx1ykLcI590XfSIuTsEs,512
|
|
22
|
+
modelcraft/validation.py,sha256=b3yk8n_FSNXDQUZz9FPsEpeUlSAOa-Xti97sktBulTg,3364
|
|
23
|
+
modelcraft/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
modelcraft/jobs/acedrg.py,sha256=DQ7AMWhqVbSN9L5uqnaDAOoAFgRfN2KHQwJlKuXun20,986
|
|
25
|
+
modelcraft/jobs/buccaneer.py,sha256=4HGpwOgBgiJv5yNDeRTADznt_FcsnPL1zue_Qh0AoNQ,6040
|
|
26
|
+
modelcraft/jobs/comit.py,sha256=fODdC6_AHdL5WFj8YfnizMFJQ5OfVjxfh9weNBIlH5k,1049
|
|
27
|
+
modelcraft/jobs/ctruncate.py,sha256=tKjAKAcWyd0k8jno2-2wlZtuEfwFZYHgdIscNHjCLEk,1661
|
|
28
|
+
modelcraft/jobs/emda.py,sha256=kLUET18rDgHpBY_HHxJ9P5SD6W30_yMsEn3Nqv5FtYM,990
|
|
29
|
+
modelcraft/jobs/findwaters.py,sha256=4j3N1_0yeDhLHe8kdV9pkmVldgx7oxpWBVSHfiNdlAA,1702
|
|
30
|
+
modelcraft/jobs/freerflag.py,sha256=lWWvHznIJw90uhAxHY2Ge3x4Z96VzX2S9vB-VYX3kz0,848
|
|
31
|
+
modelcraft/jobs/libg.py,sha256=VwwvOn78cIE2KcbxWXHup_kzVUTW0IkMjPmUEmkFDjY,652
|
|
32
|
+
modelcraft/jobs/molrep.py,sha256=MInl8MwEzPJtFAY8CRlgy3CIPXnMbjVFpQG5ulihPXo,2729
|
|
33
|
+
modelcraft/jobs/nautilus.py,sha256=rC_kuyUpBbD6qA9wAFkj-FAks52vcFYWVp1RliDwFqw,3233
|
|
34
|
+
modelcraft/jobs/nucleofind.py,sha256=ovSY6Ya84h1Pa7eb-G5K2YWwouvlYNptfFDGbwK_a3k,3087
|
|
35
|
+
modelcraft/jobs/parrot.py,sha256=DMrH3yzNanQegJNcm-ZvtkZtt7VstfyXDm_oxBP1gJA,2465
|
|
36
|
+
modelcraft/jobs/phasematch.py,sha256=wClWw4U69xOovLju-giRoobUWqhk4bGWqmQVTddDhDg,1860
|
|
37
|
+
modelcraft/jobs/refmac.py,sha256=xvYwUXjLc01dFPsEnuIOEXTs3uvmYT3KLnHo_QLg084,5375
|
|
38
|
+
modelcraft/jobs/servalcat.py,sha256=NktaPoN8UO31LVaglfXCEv-SnRaB85ZCRK94hQn_cGE,7587
|
|
39
|
+
modelcraft/jobs/sheetbend.py,sha256=aXVNkLz45EdVgIuVBSxsgKOH8GNM5iQKVjAfrNVczMo,1571
|
|
40
|
+
modelcraft/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
+
modelcraft/scripts/contents.py,sha256=m9Pu1eo42-cA4r8Wa7ysNwHlyqxT2cFIA9stCpHYb0E,657
|
|
42
|
+
modelcraft/scripts/copies.py,sha256=Pr8slbgE5bXlUusjYx5c9M0xDN-t_MVH1TZNXDYuAJo,2564
|
|
43
|
+
modelcraft/scripts/modelcraft.py,sha256=2XFSgB1MNYqX6wGlpWa1g8e_IzfONGHbFrfVCY4cTd8,429
|
|
44
|
+
modelcraft/scripts/sidechains.py,sha256=gnhKsPTIftjIOBEbhndFN9f01otd0wh_n5P0HSn4q-0,4663
|
|
45
|
+
modelcraft/scripts/validate.py,sha256=N_1_gn7T4zyQjXy88luVT6CQWv1AzHtCGEci9Kkt_lU,2374
|
|
46
|
+
modelcraft/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
|
+
modelcraft/tests/ccp4/__init__.py,sha256=lABZI5ZSElSR7rDU3-pB7sYRqjkPsN0g4PA6exyNQSk,2721
|
|
48
|
+
modelcraft/tests/ccp4/test_acedrg.py,sha256=aFktI8vWrATE9IA56AYOvKv7u806hWCTlN_j055xrbI,629
|
|
49
|
+
modelcraft/tests/ccp4/test_arguments.py,sha256=O7P4O5SqK5cCyYjMX_LTD2sk7THl88Rxk29ByfbOu-I,1396
|
|
50
|
+
modelcraft/tests/ccp4/test_buccaneer.py,sha256=dzHQLzgcZGaNozlrdVlwvL33Y3jLs5aFYa4uO4cA7yE,2259
|
|
51
|
+
modelcraft/tests/ccp4/test_cell.py,sha256=oObQH7D18K67q0Ug80VEavLbIawlCxqwZq1bw9hfFi0,1032
|
|
52
|
+
modelcraft/tests/ccp4/test_comit.py,sha256=Si0c335Smo6e9DzD5InwOJYtbI9Vv8c_SL75lrr8m8s,535
|
|
53
|
+
modelcraft/tests/ccp4/test_contents.py,sha256=mV9YBMj8KTbzPCL_mhJmP0OsK-QQMrAkCk5Wu09z7sM,8855
|
|
54
|
+
modelcraft/tests/ccp4/test_copies.py,sha256=CuJYzuHzFVAtZOHen5Bg04wpjMbR2NCQrjW6j3jGm2w,316
|
|
55
|
+
modelcraft/tests/ccp4/test_ctruncate.py,sha256=JzMNy9HK3tf2HdORqAxPrcJ6U7G-AtR0rSapCei0j0Y,2279
|
|
56
|
+
modelcraft/tests/ccp4/test_findwaters.py,sha256=kH8Fv1NUAo5SUdvtNQn__v_DYb2KPrtL8F_O0v2Wqio,1585
|
|
57
|
+
modelcraft/tests/ccp4/test_freerflag.py,sha256=2n5urZDTu9g7jxQJVJ2pGam3EKAZ92iZdJ2GguEmHmo,274
|
|
58
|
+
modelcraft/tests/ccp4/test_libg.py,sha256=UscflEnCT1VUfwlQvtnWpMqCbhOhQEYrVG2Oheu5h_E,257
|
|
59
|
+
modelcraft/tests/ccp4/test_molrep.py,sha256=I70mu8RmuVv7jq_055RAZFLVNYwBbssEgDXLjNvQrbQ,1321
|
|
60
|
+
modelcraft/tests/ccp4/test_monlib.py,sha256=chZ3xxoQNaBpsdW4aeWgEDu40HTS5QkjpkjB0ANBEDE,2700
|
|
61
|
+
modelcraft/tests/ccp4/test_nautilus.py,sha256=naJQoyKg0oc9coFPUDxTr-pflPyBva_tuLkrJRbp8Z0,1950
|
|
62
|
+
modelcraft/tests/ccp4/test_nucleofind.py,sha256=Gua1xerZ2njNUqIQCSMqd1l6n_I4kTWjL7d9zwleuIc,2137
|
|
63
|
+
modelcraft/tests/ccp4/test_parrot.py,sha256=Oxzye0x2c1-cvl8PgI3_EpXW0Bon3ErhL_5U0iq-Ccw,794
|
|
64
|
+
modelcraft/tests/ccp4/test_phasematch.py,sha256=vsZeZ4eRvxZ76BKrc_Dts8u1wM8pdHvr73-0DNpvXLg,1145
|
|
65
|
+
modelcraft/tests/ccp4/test_prune.py,sha256=pWJhwTx9kdWXQmzHFR2k3u4TVr1pfpQzwbZPvUzvjds,479
|
|
66
|
+
modelcraft/tests/ccp4/test_reflections.py,sha256=oThOoSCS63t0pG5A0BZdzPl9v6vBTldjYbcw-AG1naY,5020
|
|
67
|
+
modelcraft/tests/ccp4/test_refmac.py,sha256=xh4shhULvIKNCtj22btRM-_GFkW3GJHMSk2GYd_feks,1092
|
|
68
|
+
modelcraft/tests/ccp4/test_sequence.py,sha256=gB86Kira535RIEVkHN5MVR6yuc0CP76aRl5z_SKZ6mc,2959
|
|
69
|
+
modelcraft/tests/ccp4/test_servalcat.py,sha256=Gq-NdjsBgyNsaWA6TiCBUFP4bh_g8A9wjm8oTRjBmnI,1576
|
|
70
|
+
modelcraft/tests/ccp4/test_sheetbend.py,sha256=VL1FaCaWo1pZBjG7PMdZVtEnZhbiwWk7Sa8WXdWwwVU,546
|
|
71
|
+
modelcraft/tests/ccp4/test_sidechains.py,sha256=dDPG1vy_SWgtQtNTHXchfm2ohKtyKswqOEHxsNhyXFs,880
|
|
72
|
+
modelcraft/tests/ccp4/test_solvent.py,sha256=IfZ12E5ISjS1cMQcDRZk96JGMer1eGr2cGvbZRCWLMk,556
|
|
73
|
+
modelcraft/tests/ccp4/test_structure.py,sha256=S05FUUnjpPPHbAw_RrVdwjo2EPm2wF2Faqp4dqSQv2E,337
|
|
74
|
+
modelcraft/tests/ccp4/test_validation.py,sha256=wFusZIdFbvHAf4D1lYuFpln2WTX2rh3uLzek5LTAk18,600
|
|
75
|
+
modelcraft/tests/ccp4/test_xray.py,sha256=LW0GL5UPclbBxmj02HB9CRHzwMiLW0i4Ex9fodz3u4c,3139
|
|
76
|
+
modelcraft/tests/ccpem/__init__.py,sha256=fY53G_EEc9LG4FmZ-IfQEhmEsNg5FZfxFwOCUQj019c,656
|
|
77
|
+
modelcraft/tests/ccpem/test_em.py,sha256=eS7qdlqCQlBizmaqnEHvTsUJ2-z2w1DRcUX-1acrExY,1532
|
|
78
|
+
modelcraft/tests/ccpem/test_emda.py,sha256=nNseLsi0C8vu4UjYIP6OtalwKHyeHxMUfu9BV2HOOO8,401
|
|
79
|
+
modelcraft/tests/ccpem/test_refmac.py,sha256=g3evpenT47aZuSkSwVVHLSfSJZe2QK_YYttDOnsYMnU,326
|
|
80
|
+
modelcraft/tests/ccpem/test_servalcat.py,sha256=jWrPCoq2TlAiHW6x5SPtkH8o-JcSdwRWvt2ZU1ZvSYA,1436
|
|
81
|
+
modelcraft-6.0.0.dist-info/METADATA,sha256=_4gQqy7CG6sz36YsXv_ZUH_BlpVWfZ2hys1Vsfs1s64,2741
|
|
82
|
+
modelcraft-6.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
83
|
+
modelcraft-6.0.0.dist-info/entry_points.txt,sha256=KTN5D1dIVxOdag4aue-o2vdEq3VSWHLp5o0Jcm98rv4,286
|
|
84
|
+
modelcraft-6.0.0.dist-info/top_level.txt,sha256=My5973x4fvPrlRfQOuuFxqultnVzrg_aamczcSijdlQ,11
|
|
85
|
+
modelcraft-6.0.0.dist-info/RECORD,,
|
|
@@ -2,3 +2,5 @@
|
|
|
2
2
|
modelcraft = modelcraft.scripts.modelcraft:main
|
|
3
3
|
modelcraft-contents = modelcraft.scripts.contents:main
|
|
4
4
|
modelcraft-copies = modelcraft.scripts.copies:main
|
|
5
|
+
modelcraft-sidechains = modelcraft.scripts.sidechains:main
|
|
6
|
+
modelcraft-validate = modelcraft.scripts.validate:main
|