servalcat 0.4.88__cp311-cp311-win_amd64.whl → 0.4.99__cp311-cp311-win_amd64.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.
Potentially problematic release.
This version of servalcat might be problematic. Click here for more details.
- servalcat/__init__.py +2 -2
- servalcat/ext.cp311-win_amd64.pyd +0 -0
- servalcat/refine/refine.py +125 -42
- servalcat/refine/refine_geom.py +24 -11
- servalcat/refine/refine_spa.py +51 -30
- servalcat/refine/refine_xtal.py +20 -7
- servalcat/refine/spa.py +12 -4
- servalcat/refine/xtal.py +11 -8
- servalcat/refmac/refmac_wrapper.py +3 -11
- servalcat/spa/fofc.py +9 -3
- servalcat/spa/fsc.py +8 -10
- servalcat/spa/run_refmac.py +16 -11
- servalcat/spa/translate.py +2 -2
- servalcat/utils/commands.py +154 -4
- servalcat/utils/fileio.py +15 -8
- servalcat/utils/hkl.py +24 -22
- servalcat/utils/logger.py +25 -1
- servalcat/utils/maps.py +2 -2
- servalcat/utils/model.py +10 -10
- servalcat/utils/refmac.py +1 -1
- servalcat/utils/restraints.py +27 -28
- servalcat/utils/symmetry.py +5 -5
- servalcat/xtal/french_wilson.py +7 -5
- servalcat/xtal/sigmaa.py +52 -30
- servalcat/xtal/twin.py +12 -6
- {servalcat-0.4.88.dist-info → servalcat-0.4.99.dist-info}/METADATA +4 -4
- servalcat-0.4.99.dist-info/RECORD +45 -0
- {servalcat-0.4.88.dist-info → servalcat-0.4.99.dist-info}/WHEEL +1 -1
- servalcat-0.4.88.dist-info/RECORD +0 -45
- {servalcat-0.4.88.dist-info → servalcat-0.4.99.dist-info}/entry_points.txt +0 -0
- {servalcat-0.4.88.dist-info → servalcat-0.4.99.dist-info}/licenses/LICENSE +0 -0
servalcat/xtal/sigmaa.py
CHANGED
|
@@ -30,6 +30,8 @@ def add_arguments(parser):
|
|
|
30
30
|
parser.description = 'Sigma-A parameter estimation for crystallographic data'
|
|
31
31
|
parser.add_argument('--hklin', required=True,
|
|
32
32
|
help='Input MTZ file')
|
|
33
|
+
parser.add_argument('--spacegroup',
|
|
34
|
+
help='Override space group')
|
|
33
35
|
parser.add_argument('--labin',
|
|
34
36
|
help='MTZ column for F,SIGF,FREE')
|
|
35
37
|
parser.add_argument('--free', type=int,
|
|
@@ -77,7 +79,7 @@ def calc_r_and_cc(hkldata, centric_and_selections, twin_data=None):
|
|
|
77
79
|
has_int = "I" in hkldata.df
|
|
78
80
|
has_free = "FREE" in hkldata.df
|
|
79
81
|
stats = hkldata.binned_df.copy()
|
|
80
|
-
stats["n_obs"] = 0
|
|
82
|
+
stats[["n_obs", "n_all"]] = 0
|
|
81
83
|
if has_free:
|
|
82
84
|
stats[["n_work", "n_free"]] = 0
|
|
83
85
|
rlab = "R1" if has_int else "R"
|
|
@@ -105,6 +107,7 @@ def calc_r_and_cc(hkldata, centric_and_selections, twin_data=None):
|
|
|
105
107
|
|
|
106
108
|
for i_bin, idxes in hkldata.binned():
|
|
107
109
|
stats.loc[i_bin, "n_obs"] = numpy.sum(numpy.isfinite(obs[idxes]))
|
|
110
|
+
stats.loc[i_bin, "n_all"] = len(idxes)
|
|
108
111
|
if has_free:
|
|
109
112
|
for j, suf in ((1, "work"), (2, "free")):
|
|
110
113
|
idxes2 = numpy.concatenate([sel[j] for sel in centric_and_selections[i_bin]])
|
|
@@ -1018,10 +1021,9 @@ def smooth_params(hkldata, D_labs, smoothing): # XXX twin_data
|
|
|
1018
1021
|
# smooth_params()
|
|
1019
1022
|
|
|
1020
1023
|
def expected_F_from_int(Io, sigIo, k_ani, DFc, eps, c, S):
|
|
1021
|
-
if c == 0
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
k_num, k_den = 0., -0.5
|
|
1024
|
+
k_num = numpy.repeat(0.5 if c == 0 else 0., Io.size) # 0.5 if acentric
|
|
1025
|
+
k_den = k_num - 0.5
|
|
1026
|
+
if numpy.isscalar(c): c = numpy.repeat(c, Io.size)
|
|
1025
1027
|
to = Io / sigIo - sigIo / (c+1) / k_ani**2 / S / eps
|
|
1026
1028
|
tf = k_ani * numpy.abs(DFc) / numpy.sqrt(sigIo)
|
|
1027
1029
|
sig1 = k_ani**2 * S * eps / sigIo
|
|
@@ -1088,15 +1090,23 @@ def calculate_maps_twin(hkldata, b_aniso, fc_labs, D_labs, twin_data, centric_an
|
|
|
1088
1090
|
Io[tohide] = numpy.nan
|
|
1089
1091
|
|
|
1090
1092
|
twin_data.est_f_true(Io, sigIo)
|
|
1091
|
-
F_true = numpy.asarray(twin_data.f_true_max)
|
|
1092
1093
|
Ds = twin_data.ml_scale_array()
|
|
1093
1094
|
DFc = (twin_data.f_calc * Ds).sum(axis=1)
|
|
1094
1095
|
exp_ip = numpy.exp(numpy.angle(DFc)*1j)
|
|
1095
1096
|
Ft = numpy.asarray(twin_data.f_true_max)
|
|
1096
1097
|
m = twin_data.calc_fom()
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1098
|
+
Fexp = twin_data.expected_F(Io, sigIo)
|
|
1099
|
+
if 1:
|
|
1100
|
+
fwt = numpy.where(numpy.asarray(twin_data.centric) == 0,
|
|
1101
|
+
2 * m * Ft * exp_ip - DFc,
|
|
1102
|
+
m * Ft * exp_ip)
|
|
1103
|
+
delfwt = m * Ft * exp_ip - DFc
|
|
1104
|
+
else: # based on "more accurate" evaluation of <m|F|>
|
|
1105
|
+
fwt = numpy.where(numpy.asarray(twin_data.centric) == 0,
|
|
1106
|
+
2 * Fexp * exp_ip - DFc,
|
|
1107
|
+
m * Fexp * exp_ip)
|
|
1108
|
+
delfwt = Fexp * exp_ip - DFc
|
|
1109
|
+
|
|
1100
1110
|
sel = numpy.isnan(fwt)
|
|
1101
1111
|
fwt[sel] = DFc[sel]
|
|
1102
1112
|
|
|
@@ -1105,7 +1115,8 @@ def calculate_maps_twin(hkldata, b_aniso, fc_labs, D_labs, twin_data, centric_an
|
|
|
1105
1115
|
hkldata2.df["FWT"] = fwt
|
|
1106
1116
|
hkldata2.df["DELFWT"] = delfwt
|
|
1107
1117
|
hkldata2.df["FOM"] = m
|
|
1108
|
-
hkldata2.df["F_est"] =
|
|
1118
|
+
hkldata2.df["F_est"] = Ft
|
|
1119
|
+
hkldata2.df["F_exp"] = Fexp
|
|
1109
1120
|
hkldata2.df["FC"] = twin_data.f_calc.sum(axis=1)
|
|
1110
1121
|
hkldata2.df["DFC"] = DFc
|
|
1111
1122
|
hkldata2.df[D_labs] = Ds
|
|
@@ -1116,7 +1127,7 @@ def calculate_maps_twin(hkldata, b_aniso, fc_labs, D_labs, twin_data, centric_an
|
|
|
1116
1127
|
def merge_models(sts): # simply merge models. no fix in chain ids etc.
|
|
1117
1128
|
st2 = sts[0].clone()
|
|
1118
1129
|
del st2[:]
|
|
1119
|
-
model = gemmi.Model(
|
|
1130
|
+
model = gemmi.Model(1)
|
|
1120
1131
|
for st in sts:
|
|
1121
1132
|
for m in st:
|
|
1122
1133
|
for c in m:
|
|
@@ -1153,7 +1164,7 @@ def decide_mtz_labels(mtz, find_free=True, require=None):
|
|
|
1153
1164
|
|
|
1154
1165
|
def process_input(hklin, labin, n_bins, free, xyzins, source, d_max=None, d_min=None,
|
|
1155
1166
|
n_per_bin=None, use="all", max_bins=None, cif_index=0, keep_charges=False,
|
|
1156
|
-
allow_unusual_occupancies=False):
|
|
1167
|
+
allow_unusual_occupancies=False, space_group=None):
|
|
1157
1168
|
if labin: assert 1 < len(labin) < 6
|
|
1158
1169
|
assert use in ("all", "work", "test")
|
|
1159
1170
|
assert n_bins or n_per_bin #if n_bins not set, n_per_bin should be given
|
|
@@ -1204,6 +1215,12 @@ def process_input(hklin, labin, n_bins, free, xyzins, source, d_max=None, d_min=
|
|
|
1204
1215
|
if hkldata.df.empty:
|
|
1205
1216
|
raise RuntimeError("No data in hkl data")
|
|
1206
1217
|
|
|
1218
|
+
if space_group is None:
|
|
1219
|
+
sg_use = None
|
|
1220
|
+
else:
|
|
1221
|
+
sg_use = gemmi.SpaceGroup(space_group)
|
|
1222
|
+
logger.writeln(f"Space group overridden by user. Using {sg_use.xhm()}")
|
|
1223
|
+
|
|
1207
1224
|
if sts:
|
|
1208
1225
|
assert source in ["electron", "xray", "neutron"]
|
|
1209
1226
|
for st in sts:
|
|
@@ -1216,39 +1233,43 @@ def process_input(hklin, labin, n_bins, free, xyzins, source, d_max=None, d_min=
|
|
|
1216
1233
|
for st in sts: st.cell = hkldata.cell # mtz cell is used in any case
|
|
1217
1234
|
|
|
1218
1235
|
sg_st = sts[0].find_spacegroup() # may be None
|
|
1219
|
-
sg_use
|
|
1220
|
-
|
|
1221
|
-
if
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1236
|
+
if sg_use is None:
|
|
1237
|
+
sg_use = hkldata.sg
|
|
1238
|
+
if hkldata.sg != sg_st:
|
|
1239
|
+
if st.cell.is_crystal() and sg_st and sg_st.laue_str() != hkldata.sg.laue_str():
|
|
1240
|
+
raise RuntimeError("Crystal symmetry mismatch between model and data")
|
|
1241
|
+
logger.writeln("Warning: space group mismatch between model and mtz")
|
|
1242
|
+
if sg_st and sg_st.laue_str() == hkldata.sg.laue_str():
|
|
1243
|
+
logger.writeln(" using space group from model")
|
|
1244
|
+
sg_use = sg_st
|
|
1245
|
+
else:
|
|
1246
|
+
logger.writeln(" using space group from mtz")
|
|
1247
|
+
logger.writeln("")
|
|
1248
|
+
|
|
1231
1249
|
for st in sts:
|
|
1232
1250
|
st.spacegroup_hm = sg_use.xhm()
|
|
1233
1251
|
st.setup_cell_images()
|
|
1234
|
-
hkldata.sg = sg_use
|
|
1235
1252
|
|
|
1236
1253
|
if not keep_charges:
|
|
1237
1254
|
utils.model.remove_charge(sts)
|
|
1238
1255
|
utils.model.check_atomsf(sts, source)
|
|
1239
1256
|
|
|
1257
|
+
if sg_use is not None:
|
|
1258
|
+
hkldata.sg = sg_use
|
|
1240
1259
|
if newlabels[0] == "FP":
|
|
1241
1260
|
hkldata.remove_nonpositive(newlabels[0])
|
|
1242
1261
|
hkldata.remove_nonpositive(newlabels[1])
|
|
1243
1262
|
hkldata.switch_to_asu()
|
|
1244
1263
|
hkldata.remove_systematic_absences()
|
|
1245
1264
|
#hkldata.df = hkldata.df.astype({name: 'float64' for name in ["I","SIGI","FP","SIGFP"] if name in hkldata.df})
|
|
1246
|
-
|
|
1265
|
+
d_min_data = hkldata.d_min_max(newlabels)[0]
|
|
1266
|
+
if d_min is None and hkldata.d_min_max()[0] != d_min_data:
|
|
1267
|
+
d_min = d_min_data
|
|
1268
|
+
logger.writeln(f"Changing resolution to {d_min:.3f} A")
|
|
1247
1269
|
if (d_min, d_max).count(None) != 2:
|
|
1248
1270
|
hkldata = hkldata.copy(d_min=d_min, d_max=d_max)
|
|
1249
1271
|
if hkldata.df.empty:
|
|
1250
1272
|
raise RuntimeError("No data left in hkl data")
|
|
1251
|
-
d_min, d_max = hkldata.d_min_max()
|
|
1252
1273
|
|
|
1253
1274
|
hkldata.complete()
|
|
1254
1275
|
hkldata.sort_by_resolution()
|
|
@@ -1527,7 +1548,8 @@ def main(args):
|
|
|
1527
1548
|
n_per_bin=n_per_bin,
|
|
1528
1549
|
use=args.use,
|
|
1529
1550
|
max_bins=30,
|
|
1530
|
-
keep_charges=args.keep_charges
|
|
1551
|
+
keep_charges=args.keep_charges,
|
|
1552
|
+
space_group=args.spacegroup)
|
|
1531
1553
|
except RuntimeError as e:
|
|
1532
1554
|
raise SystemExit("Error: {}".format(e))
|
|
1533
1555
|
|
|
@@ -1597,7 +1619,7 @@ def main(args):
|
|
|
1597
1619
|
|
|
1598
1620
|
# Write mtz file
|
|
1599
1621
|
if twin_data:
|
|
1600
|
-
labs = ["F_est"]
|
|
1622
|
+
labs = ["F_est", "F_exp"]
|
|
1601
1623
|
elif is_int:
|
|
1602
1624
|
labs = ["I", "SIGI"]
|
|
1603
1625
|
else:
|
|
@@ -1613,7 +1635,7 @@ def main(args):
|
|
|
1613
1635
|
labs.append("F_true_est")
|
|
1614
1636
|
labs += D_labs + ["S"]
|
|
1615
1637
|
mtz_out = args.output_prefix+".mtz"
|
|
1616
|
-
hkldata.write_mtz(mtz_out, labs=labs, types={"FOM": "W", "FP":"F", "SIGFP":"Q", "F_est": "F"})
|
|
1638
|
+
hkldata.write_mtz(mtz_out, labs=labs, types={"FOM": "W", "FP":"F", "SIGFP":"Q", "F_est": "F", "F_exp": "F"})
|
|
1617
1639
|
return hkldata
|
|
1618
1640
|
# main()
|
|
1619
1641
|
if __name__ == "__main__":
|
servalcat/xtal/twin.py
CHANGED
|
@@ -23,7 +23,7 @@ def find_twin_domains_from_data(hkldata, max_oblique=5, min_alpha=0.05):
|
|
|
23
23
|
if not ops:
|
|
24
24
|
return
|
|
25
25
|
twin_data = ext.TwinData()
|
|
26
|
-
twin_data.setup(hkldata.miller_array()
|
|
26
|
+
twin_data.setup(hkldata.miller_array(), hkldata.df.bin, hkldata.sg, hkldata.cell, ops)
|
|
27
27
|
if "I" in hkldata.df:
|
|
28
28
|
Io = hkldata.df.I.to_numpy()
|
|
29
29
|
else:
|
|
@@ -37,14 +37,17 @@ def find_twin_domains_from_data(hkldata, max_oblique=5, min_alpha=0.05):
|
|
|
37
37
|
for i_op, op in enumerate(ops):
|
|
38
38
|
ii = numpy.array(twin_data.pairs(i_op, i_bin))
|
|
39
39
|
val = numpy.all(numpy.isfinite(Io[ii]), axis=1)
|
|
40
|
-
|
|
40
|
+
if numpy.sum(val) == 0:
|
|
41
|
+
cc = numpy.nan
|
|
42
|
+
else:
|
|
43
|
+
cc = numpy.corrcoef(Io[ii][val].T)[0,1]
|
|
41
44
|
rr = (1 - numpy.sqrt(1 - cc**2)) / cc
|
|
42
45
|
ratios.append(rr)
|
|
43
46
|
ccs[-1].append(cc)
|
|
44
47
|
nums[-1].append(len(val))
|
|
45
|
-
alphas.append(numpy.array(ratios) /
|
|
48
|
+
alphas.append(numpy.array(ratios) / numpy.nansum(ratios))
|
|
46
49
|
alphas = numpy.maximum(0, numpy.mean(alphas, axis=0))
|
|
47
|
-
alphas /= numpy.
|
|
50
|
+
alphas /= numpy.nansum(alphas)
|
|
48
51
|
ccs = numpy.array(ccs)
|
|
49
52
|
nums = numpy.array(nums)
|
|
50
53
|
tmp = [{"Operator": gemmi.Op().triplet(),
|
|
@@ -54,7 +57,10 @@ def find_twin_domains_from_data(hkldata, max_oblique=5, min_alpha=0.05):
|
|
|
54
57
|
for i_op, op in enumerate(ops):
|
|
55
58
|
ii = numpy.array(twin_data.pairs(i_op))
|
|
56
59
|
val = numpy.all(numpy.isfinite(Io[ii]), axis=1)
|
|
57
|
-
|
|
60
|
+
if numpy.sum(val) == 0:
|
|
61
|
+
r_obs = numpy.nan
|
|
62
|
+
else:
|
|
63
|
+
r_obs = numpy.sum(numpy.abs(Io[ii][val, 0] - Io[ii][val, 1])) / numpy.sum(Io[ii][val])
|
|
58
64
|
tmp.append({"Operator": op.triplet(),
|
|
59
65
|
"CC_mean": numpy.sum(nums[:,i_op] * ccs[:,i_op]) / numpy.sum(nums[:,i_op]),
|
|
60
66
|
"R_twin_obs": r_obs,
|
|
@@ -77,7 +83,7 @@ def find_twin_domains_from_data(hkldata, max_oblique=5, min_alpha=0.05):
|
|
|
77
83
|
"Alpha": alphas})
|
|
78
84
|
logger.writeln(df.to_string(float_format="%.2f"))
|
|
79
85
|
twin_data = ext.TwinData()
|
|
80
|
-
twin_data.setup(hkldata.miller_array()
|
|
86
|
+
twin_data.setup(hkldata.miller_array(), hkldata.df.bin, hkldata.sg, hkldata.cell, ops)
|
|
81
87
|
twin_data.alphas = alphas
|
|
82
88
|
if "I" not in hkldata.df:
|
|
83
89
|
logger.writeln('Generating "observed" intensities for twin refinement: Io = Fo**2, SigIo = 2*F*SigFo')
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: servalcat
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.99
|
|
4
4
|
Summary: Structure refinement and validation for crystallography and single particle analysis
|
|
5
5
|
Author: Keitaro Yamashita, Garib N. Murshudov
|
|
6
6
|
License: MPL-2.0
|
|
7
7
|
Project-URL: Repository, https://github.com/keitaroyam/servalcat
|
|
8
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.8
|
|
9
9
|
Requires-Dist: packaging
|
|
10
10
|
Requires-Dist: numpy>=1.15
|
|
11
11
|
Requires-Dist: scipy
|
|
12
12
|
Requires-Dist: pandas>=1.1.0
|
|
13
|
-
Requires-Dist: gemmi==0.
|
|
13
|
+
Requires-Dist: gemmi==0.7.0
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
|
|
16
16
|
# Servalcat
|
|
@@ -40,7 +40,7 @@ pip install servalcat
|
|
|
40
40
|
```
|
|
41
41
|
will install the stable version.
|
|
42
42
|
|
|
43
|
-
The required GEMMI version is now [v0.
|
|
43
|
+
The required GEMMI version is now [v0.7.0](https://github.com/project-gemmi/gemmi/releases/tag/v0.7.0). It may not work with the latest gemmi code from the github. The policy is in the main branch I only push the code that works with the latest package of GEMMI.
|
|
44
44
|
|
|
45
45
|
To use the Refmac5 related commands, you also need to install [CCP4](https://www.ccp4.ac.uk/). For "No Refmac5" commands, you may just need [the monomer library](https://github.com/MonomerLibrary/monomers) if CCP4 is not installed.
|
|
46
46
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
servalcat/__init__.py,sha256=HJt3p1jXzt-hnlShh1LfxHF3WRNM7hyk1FY-B4EqExc,241
|
|
2
|
+
servalcat/__main__.py,sha256=XUM193aDwZAEQY02VzvZasAzD6AYEM-_A4wqy93KDWE,4190
|
|
3
|
+
servalcat/ext.cp311-win_amd64.pyd,sha256=np_8MkPh1MRhyQTE0KmWptpYz6RoE0OiM0s0P5TCdJY,1335296
|
|
4
|
+
servalcat/refine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
servalcat/refine/cgsolve.py,sha256=Xz7EwGI-mr4nnbfARyfFjAqbJbPWGH9qNWQ0GpltDuc,3172
|
|
6
|
+
servalcat/refine/refine.py,sha256=P6epHQZLpz3Tl2fuGrdCp6WOxuzvik7YJJTBsd4zuHg,44941
|
|
7
|
+
servalcat/refine/refine_geom.py,sha256=RMfhmBb-jlSFZoMhV3QONev9U2ZuHuPyjSslhECMYXo,11585
|
|
8
|
+
servalcat/refine/refine_spa.py,sha256=BFoJPNhyLVUWl2U2aDufkRJheYmzhnP4iEdE9DZ5JWc,19528
|
|
9
|
+
servalcat/refine/refine_xtal.py,sha256=kI6oqE2u8E82KUqk6zg4Y9JVLC2PIE9LG227rXWlYM8,15017
|
|
10
|
+
servalcat/refine/spa.py,sha256=7aYSnSty0fSe46P_RQ79Bd_8RwD88k3uAaLHVsz6yHc,6616
|
|
11
|
+
servalcat/refine/xtal.py,sha256=qusNpwRdBie9pnHol_NTDgou08reuiERWBujyhREFbc,14893
|
|
12
|
+
servalcat/refmac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
servalcat/refmac/exte.py,sha256=LRPej2yCZ4RoWJnEQldILEiUED6S_w1lgutWAdhu9_o,9201
|
|
14
|
+
servalcat/refmac/refmac_keywords.py,sha256=WPLDQdk91i5yKZ0QcfaTQ6qL-_qBv7_91eUv4Is9j54,27288
|
|
15
|
+
servalcat/refmac/refmac_wrapper.py,sha256=7FuYyWqN1UvSilFECWOSmWmYObXFLvO49PWkRbwBPHQ,18233
|
|
16
|
+
servalcat/spa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
servalcat/spa/fofc.py,sha256=DONPNvHPP9odKGNekpo781D_skjReUEytQ1wHBJxGwc,23592
|
|
18
|
+
servalcat/spa/fsc.py,sha256=Rszx-zzJiX5iSY-Qp6q5uCrEhE3a5eyW-m_szT5itLA,17839
|
|
19
|
+
servalcat/spa/localcc.py,sha256=FJMXiC0Po5eb1Le404mgNDj9VcxH5CRR9F5B7uDZn5w,8173
|
|
20
|
+
servalcat/spa/realspcc_from_var.py,sha256=x3NaqGKpGmQyh3qp-SJ9kTA_hP2EvxBOIszYbV2EPKk,5403
|
|
21
|
+
servalcat/spa/run_refmac.py,sha256=bHSj-8_RLdrfHTCyNWoMtXsrNT37AfpONZ8D3jR01ZE,50527
|
|
22
|
+
servalcat/spa/shift_maps.py,sha256=G_EddBcdyncl2bhW7I-4YF0ZFtX9Q95a2SIJ9rpPeR4,13561
|
|
23
|
+
servalcat/spa/shiftback.py,sha256=EtITj8Nllz-MWE6oJrxruDWeT0q7tS3RXCKtpWMuHNg,4801
|
|
24
|
+
servalcat/spa/translate.py,sha256=PGf1vHh_b_mxDta_CAghY7QBRVPzHSaGLDhrnafqCdA,5228
|
|
25
|
+
servalcat/utils/__init__.py,sha256=4umrD2fhG1QAQppDBQM95-6y8QYbtxr7Mi_-Nkc3XOA,1172
|
|
26
|
+
servalcat/utils/commands.py,sha256=fEWF6HesIAuxnzbaKAPws_QaIPxJUQc6DVthHeex_Vk,72503
|
|
27
|
+
servalcat/utils/fileio.py,sha256=3fyHTQ62sibP3cUYtX8D9G7cC6qelkfPKnbA47MqPOo,30246
|
|
28
|
+
servalcat/utils/generate_operators.py,sha256=fCrcTcciRn-6fpFtHYvf1oPXAObjuqR3WQejz5d0RrA,10980
|
|
29
|
+
servalcat/utils/hkl.py,sha256=sMaXJprnceVLDHWfwPSTWmbVbAJEPfj86tF3C0S2g_o,28776
|
|
30
|
+
servalcat/utils/logger.py,sha256=VXSkn54Rp2dxnCQ-Smb5T0NZqysvw8GGb4bKyA8Vuig,4729
|
|
31
|
+
servalcat/utils/maps.py,sha256=1Gm54nEvPj4peCuo0Rx-8_gvRD1pr2qECq7U9N6mrVw,13570
|
|
32
|
+
servalcat/utils/model.py,sha256=YPqYNCPZrbtUPbtMROQUA1RowEC7zrBlUvAEFNfoW5k,30959
|
|
33
|
+
servalcat/utils/refmac.py,sha256=dY92UZo2orgZJOEmPacCek8PMj-ydCp6-pR0rdsAVG8,31682
|
|
34
|
+
servalcat/utils/restraints.py,sha256=hclAJ3CKzIqeyC-I0rH8TSwikwQN1k8dUtYWKC0OAnU,37741
|
|
35
|
+
servalcat/utils/symmetry.py,sha256=PSSD-S_j_t1m4E9F8Fd9RJqTWyKf92zLCjSED7iXFkU,12164
|
|
36
|
+
servalcat/xtal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
servalcat/xtal/french_wilson.py,sha256=u4wzHuotO8-avPkhuEylg9WmMZYdGHYz1IvG07uqW3M,12045
|
|
38
|
+
servalcat/xtal/run_refmac_small.py,sha256=_Rw7wz7_yAlQgDqjJ_njeK6ZqN_r7KAakoor9WeNhxI,10634
|
|
39
|
+
servalcat/xtal/sigmaa.py,sha256=uF552XnFyaBKfN36c8ajMOxFGrW_r3p9FFQ4T5nB1wg,76970
|
|
40
|
+
servalcat/xtal/twin.py,sha256=gsDyyeC5jxsY8wepcB9lnNNPgVCvqlGVj9_kQZkkdWg,5021
|
|
41
|
+
servalcat-0.4.99.dist-info/METADATA,sha256=OxT6LeODHswv4-Yg1Xtv6pjkvHjriRcZNFfq5asJObs,2741
|
|
42
|
+
servalcat-0.4.99.dist-info/WHEEL,sha256=kXCl1J14PkmxQKXf5U_5vxmme_OmC3Ydcral7u0yA3M,106
|
|
43
|
+
servalcat-0.4.99.dist-info/entry_points.txt,sha256=G1mDxhOCdF3umYz4k0kfwJbSdYSKqhvQdGCmrP8FRAY,111
|
|
44
|
+
servalcat-0.4.99.dist-info/licenses/LICENSE,sha256=JoTeFzAOCkNGhvHsf4r2BFIHpLRXo_4EsrnOZV58XVA,17098
|
|
45
|
+
servalcat-0.4.99.dist-info/RECORD,,
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
servalcat/__init__.py,sha256=J-eWO5IStrvYxM0WSIzvvyPYYjxss2eHwjvBI0SHvTc,241
|
|
2
|
-
servalcat/__main__.py,sha256=XUM193aDwZAEQY02VzvZasAzD6AYEM-_A4wqy93KDWE,4190
|
|
3
|
-
servalcat/ext.cp311-win_amd64.pyd,sha256=bbcmR2_siHbx1spn6lxF9qBeWPlbSDbqqbnUPI6hjvY,2034688
|
|
4
|
-
servalcat/refine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
servalcat/refine/cgsolve.py,sha256=Xz7EwGI-mr4nnbfARyfFjAqbJbPWGH9qNWQ0GpltDuc,3172
|
|
6
|
-
servalcat/refine/refine.py,sha256=dnpIICEbhUehxuQXoJGuvYfvVGFAIAYp4pWZO5RT-Qs,39113
|
|
7
|
-
servalcat/refine/refine_geom.py,sha256=z59FZdKL2Dll-VBKOVGd9xxz2WRjDF4XSa5fRdIAW3c,10977
|
|
8
|
-
servalcat/refine/refine_spa.py,sha256=OFwyGV4JLYNh-xcRh9ate-bpDZ11YKEm0nPdK0YbFRM,18241
|
|
9
|
-
servalcat/refine/refine_xtal.py,sha256=oLEmdFeVDB4UdzzghsSE7NkGDa3uyKcDF3sosp-vx_g,14111
|
|
10
|
-
servalcat/refine/spa.py,sha256=uc3kFLVMlFT_EaSjzOWZ4tx9XzGcPswffSW1PZd1i5Q,6374
|
|
11
|
-
servalcat/refine/xtal.py,sha256=CP71Ga3enWjJoW4u8xibtv9RJYah7MFmiwpROkrJR30,14657
|
|
12
|
-
servalcat/refmac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
servalcat/refmac/exte.py,sha256=LRPej2yCZ4RoWJnEQldILEiUED6S_w1lgutWAdhu9_o,9201
|
|
14
|
-
servalcat/refmac/refmac_keywords.py,sha256=WPLDQdk91i5yKZ0QcfaTQ6qL-_qBv7_91eUv4Is9j54,27288
|
|
15
|
-
servalcat/refmac/refmac_wrapper.py,sha256=ku6oNdUDJGXSjQFpPaaDM4vBbbNTIoFHzMOsz-Ahdyg,18533
|
|
16
|
-
servalcat/spa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
servalcat/spa/fofc.py,sha256=Ztg7RCmq7_fdnwZbjQAV3C1VgYaDVXof04CN9ZHX_SU,23235
|
|
18
|
-
servalcat/spa/fsc.py,sha256=vsHDKfQpkHHhklTVP4Le_4Ry26Xg5a--wIIqWKrrGlI,17806
|
|
19
|
-
servalcat/spa/localcc.py,sha256=FJMXiC0Po5eb1Le404mgNDj9VcxH5CRR9F5B7uDZn5w,8173
|
|
20
|
-
servalcat/spa/realspcc_from_var.py,sha256=x3NaqGKpGmQyh3qp-SJ9kTA_hP2EvxBOIszYbV2EPKk,5403
|
|
21
|
-
servalcat/spa/run_refmac.py,sha256=vfCLoN__6PM-c8cdx9tIZ4KzNjGwVR-f6XQedtSlGsU,50168
|
|
22
|
-
servalcat/spa/shift_maps.py,sha256=G_EddBcdyncl2bhW7I-4YF0ZFtX9Q95a2SIJ9rpPeR4,13561
|
|
23
|
-
servalcat/spa/shiftback.py,sha256=EtITj8Nllz-MWE6oJrxruDWeT0q7tS3RXCKtpWMuHNg,4801
|
|
24
|
-
servalcat/spa/translate.py,sha256=8Cwxvxb_Ooi14ZcBaGu2xky0IFS92PHWzCzEDS6u2vY,5220
|
|
25
|
-
servalcat/utils/__init__.py,sha256=4umrD2fhG1QAQppDBQM95-6y8QYbtxr7Mi_-Nkc3XOA,1172
|
|
26
|
-
servalcat/utils/commands.py,sha256=7tE6fr8NZ7NR7-sIMU4YztU5aFb72ZApdLQ_q2x_IMk,65434
|
|
27
|
-
servalcat/utils/fileio.py,sha256=mIcwHVZkUNeUzYrlHAK9JZ2mk2KMGt7eu4Y_1MCskII,29822
|
|
28
|
-
servalcat/utils/generate_operators.py,sha256=fCrcTcciRn-6fpFtHYvf1oPXAObjuqR3WQejz5d0RrA,10980
|
|
29
|
-
servalcat/utils/hkl.py,sha256=w11Y8vK5w5Kv6RoW3neDk9irwp8MSDOdXaSugj3NzYg,28882
|
|
30
|
-
servalcat/utils/logger.py,sha256=2XKMrcc-COGBscVsLNqY9VEHN-AEJW_qFc8xJxs7W7U,3944
|
|
31
|
-
servalcat/utils/maps.py,sha256=UXOGPr-uELKiHCbm6OHNBzTALpfDxm1TZFQjYFOQzcw,13562
|
|
32
|
-
servalcat/utils/model.py,sha256=UdnKyVhVbPzVhWYXvLhY0DITbdAQkmECYDnEll7unw8,31054
|
|
33
|
-
servalcat/utils/refmac.py,sha256=NlpvU9Sk4VhK0We9eN6OCsC9gxZgjU8Lpwxekw23R_A,31681
|
|
34
|
-
servalcat/utils/restraints.py,sha256=djrGTrcaMddPrfJVsQSCmOpo5Eqh2PUPks8dgStckIc,37693
|
|
35
|
-
servalcat/utils/symmetry.py,sha256=vDzGPza7PhmohTNf6OPTsMyUHvHJx7CEyl5Ob8OhukY,12232
|
|
36
|
-
servalcat/xtal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
servalcat/xtal/french_wilson.py,sha256=fAGbAeWUri83ELmzIdldsK1cMp1G_oACHq2Mv5LUTlg,11912
|
|
38
|
-
servalcat/xtal/run_refmac_small.py,sha256=_Rw7wz7_yAlQgDqjJ_njeK6ZqN_r7KAakoor9WeNhxI,10634
|
|
39
|
-
servalcat/xtal/sigmaa.py,sha256=8yQREli__FXR4FJprdg-Y-4zzqQMaRW86o53KDFFgPA,75807
|
|
40
|
-
servalcat/xtal/twin.py,sha256=Gf7mmm3dHvrZBSjj-6CaRqnnJHMlWJb-dzJAopZjc8Q,4856
|
|
41
|
-
servalcat-0.4.88.dist-info/METADATA,sha256=B0VVGu-KUJy9euhZEeDrZ_mIlwvMBeKh3e8Pz8zm_ww,2741
|
|
42
|
-
servalcat-0.4.88.dist-info/WHEEL,sha256=C1LJSxOQyFOX7BTwDufPTiPDOX7R37UjfqzhMFpA3pY,106
|
|
43
|
-
servalcat-0.4.88.dist-info/entry_points.txt,sha256=G1mDxhOCdF3umYz4k0kfwJbSdYSKqhvQdGCmrP8FRAY,111
|
|
44
|
-
servalcat-0.4.88.dist-info/licenses/LICENSE,sha256=JoTeFzAOCkNGhvHsf4r2BFIHpLRXo_4EsrnOZV58XVA,17098
|
|
45
|
-
servalcat-0.4.88.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|