servalcat 0.4.72__cp39-cp39-win_amd64.whl → 0.4.99__cp39-cp39-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/xtal/twin.py ADDED
@@ -0,0 +1,121 @@
1
+ """
2
+ Author: "Keitaro Yamashita, Garib N. Murshudov"
3
+ MRC Laboratory of Molecular Biology
4
+
5
+ This software is released under the
6
+ Mozilla Public License, version 2.0; see LICENSE.
7
+ """
8
+ from __future__ import absolute_import, division, print_function, generators
9
+ import argparse
10
+ import gemmi
11
+ import numpy
12
+ import pandas
13
+ from servalcat.utils import logger
14
+ from servalcat import utils
15
+ from servalcat import ext
16
+
17
+ def find_twin_domains_from_data(hkldata, max_oblique=5, min_alpha=0.05):
18
+ logger.writeln("Finding possible twin operators from data")
19
+ ops = gemmi.find_twin_laws(hkldata.cell, hkldata.sg, max_oblique, False)
20
+ logger.writeln(f" {len(ops)} possible twin operator(s) found")
21
+ #for op in ops:
22
+ # logger.writeln(f" {op.triplet()}")
23
+ if not ops:
24
+ return
25
+ twin_data = ext.TwinData()
26
+ twin_data.setup(hkldata.miller_array(), hkldata.df.bin, hkldata.sg, hkldata.cell, ops)
27
+ if "I" in hkldata.df:
28
+ Io = hkldata.df.I.to_numpy()
29
+ else:
30
+ Io = hkldata.df.FP.to_numpy()**2
31
+ alphas = []
32
+ ccs, nums = [], []
33
+ for i_bin, bin_idxes in hkldata.binned():
34
+ ratios = [1.]
35
+ ccs.append([])
36
+ nums.append([])
37
+ for i_op, op in enumerate(ops):
38
+ ii = numpy.array(twin_data.pairs(i_op, i_bin))
39
+ val = numpy.all(numpy.isfinite(Io[ii]), axis=1)
40
+ if numpy.sum(val) == 0:
41
+ cc = numpy.nan
42
+ else:
43
+ cc = numpy.corrcoef(Io[ii][val].T)[0,1]
44
+ rr = (1 - numpy.sqrt(1 - cc**2)) / cc
45
+ ratios.append(rr)
46
+ ccs[-1].append(cc)
47
+ nums[-1].append(len(val))
48
+ alphas.append(numpy.array(ratios) / numpy.nansum(ratios))
49
+ alphas = numpy.maximum(0, numpy.mean(alphas, axis=0))
50
+ alphas /= numpy.nansum(alphas)
51
+ ccs = numpy.array(ccs)
52
+ nums = numpy.array(nums)
53
+ tmp = [{"Operator": gemmi.Op().triplet(),
54
+ "R_twin_obs": 0,
55
+ "CC_mean": 1,
56
+ "Alpha_from_CC": alphas[0]}]
57
+ for i_op, op in enumerate(ops):
58
+ ii = numpy.array(twin_data.pairs(i_op))
59
+ val = numpy.all(numpy.isfinite(Io[ii]), axis=1)
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])
64
+ tmp.append({"Operator": op.triplet(),
65
+ "CC_mean": numpy.sum(nums[:,i_op] * ccs[:,i_op]) / numpy.sum(nums[:,i_op]),
66
+ "R_twin_obs": r_obs,
67
+ "Alpha_from_CC": alphas[i_op+1],
68
+ })
69
+ df = pandas.DataFrame(tmp)
70
+ logger.writeln(df.to_string(float_format="%.2f"))
71
+
72
+ sel_idxes = [i for i, a in enumerate(alphas) if i > 0 and a > min_alpha]
73
+ if not sel_idxes:
74
+ logger.writeln(" No twinning detected")
75
+ return
76
+
77
+ if len(sel_idxes) + 1 != len(alphas):
78
+ ops = [ops[i-1] for i in sel_idxes]
79
+ logger.writeln(" Twin operators after filtering small fractions")
80
+ alphas = numpy.array([alphas[0]] + [alphas[i] for i in sel_idxes])
81
+ alphas /= numpy.sum(alphas)
82
+ df = pandas.DataFrame({"Operator": [x.triplet() for x in [gemmi.Op()]+ops],
83
+ "Alpha": alphas})
84
+ logger.writeln(df.to_string(float_format="%.2f"))
85
+ twin_data = ext.TwinData()
86
+ twin_data.setup(hkldata.miller_array(), hkldata.df.bin, hkldata.sg, hkldata.cell, ops)
87
+ twin_data.alphas = alphas
88
+ if "I" not in hkldata.df:
89
+ logger.writeln('Generating "observed" intensities for twin refinement: Io = Fo**2, SigIo = 2*F*SigFo')
90
+ hkldata.df["I"] = hkldata.df.FP**2
91
+ hkldata.df["SIGI"] = 2 * hkldata.df.FP * hkldata.df.SIGFP
92
+ return twin_data
93
+
94
+ # find_twin_domains_from_data()
95
+
96
+ def estimate_twin_fractions_from_model(twin_data, hkldata):
97
+ logger.writeln("Estimating twin fractions")
98
+ Ic = numpy.abs(twin_data.f_calc.sum(axis=1))**2
99
+ Ic_all = Ic[twin_data.twin_related(hkldata.sg)]
100
+ rr = twin_data.obs_related_asu()
101
+ tmp = []
102
+ for i_bin, bin_idxes in hkldata.binned():
103
+ cc_o_c = []
104
+ i_tmp = Ic_all[numpy.asarray(twin_data.bin)==i_bin,:]
105
+ P = numpy.corrcoef(i_tmp.T)
106
+ iobs = hkldata.df.I.to_numpy()[bin_idxes]
107
+ ic_bin = Ic[rr[bin_idxes,:]]
108
+ val = numpy.isfinite(iobs) & numpy.isfinite(ic_bin).all(axis=1)
109
+ iobs, ic_bin = iobs[val], ic_bin[val,:]
110
+ cc_o_c = [numpy.corrcoef(iobs, ic_bin[:,i])[0,1] for i in range(len(twin_data.ops)+1)]
111
+ frac_est = numpy.dot(numpy.linalg.pinv(P), cc_o_c)
112
+ tmp.append(frac_est.tolist())
113
+
114
+ df = pandas.DataFrame(tmp)
115
+ df.iloc[:,:] /= df.sum(axis=1).to_numpy()[:,None]
116
+ mean_alphas = numpy.maximum(0, df.mean())
117
+ mean_alphas /= numpy.sum(mean_alphas)
118
+ logger.write(" Estimated fractions from data-model correlations: ")
119
+ logger.writeln(" ".join("%.2f"%x for x in mean_alphas))
120
+ twin_data.alphas = mean_alphas
121
+
@@ -1,16 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: servalcat
3
- Version: 0.4.72
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.7
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.6.6
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.6.6](https://github.com/project-gemmi/gemmi/releases/tag/v0.6.6). 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.
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.cp39-win_amd64.pyd,sha256=yoeuFBWXE7TN9P7YBJAZ_Cg94gnm3ul4v-kM6pAdjMs,1336320
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=s-IzttuPuPJp8zDv-jm-zGvTOCxdFCvjX9dIQ9zqnM8,104
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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: scikit-build-core 0.9.5
2
+ Generator: scikit-build-core 0.10.7
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-win_amd64
5
5
 
@@ -1,44 +0,0 @@
1
- servalcat/__init__.py,sha256=38MjgJlCYiBGXs6xPMoSqHeHNYgnEGdawRSdJ63BoBI,241
2
- servalcat/__main__.py,sha256=XUM193aDwZAEQY02VzvZasAzD6AYEM-_A4wqy93KDWE,4190
3
- servalcat/ext.cp39-win_amd64.pyd,sha256=zbnrhTSsvNK4aYw7qXE5npbWoK7bbMqB6IWeRr_zgOE,1881088
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=mC7iSnY5TwEoGeYSc_Wx-tXSY7rxp91HzF--SuSUzqc,39048
7
- servalcat/refine/refine_geom.py,sha256=K5rXXZGiNobcWo2rVUCWeTZW24iJhRDMY7ggYuZp7AU,10580
8
- servalcat/refine/refine_spa.py,sha256=ZU8arWp_3TJ7v2BFBf1Vp07gl16yeV3Rv6LrvzGEqPk,17676
9
- servalcat/refine/refine_xtal.py,sha256=IrOOni5156efry4DBJ83sGTnAZ072n4sUJjxn0tDyiA,12844
10
- servalcat/refine/spa.py,sha256=4_USXJEzbRXmIEf9nmS1spi-hWdqTEAfuMPCyIT59uA,6327
11
- servalcat/refine/xtal.py,sha256=X7a_U9j7DTl1-OekvC0WmHcjt_ARF7Bp5ee-Rs3_thU,12075
12
- servalcat/refmac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- servalcat/refmac/exte.py,sha256=nTXTy9dXENnsXHq_1CgnCt6eJelBXBVhDq8vq1Ji_Ok,9027
14
- servalcat/refmac/refmac_keywords.py,sha256=U15TArxqL-2sVOmEu4lp6PMrYjZoZyyFQSCOYysa7IY,27149
15
- servalcat/refmac/refmac_wrapper.py,sha256=X3ZkqNoTxaxrVARVfK8cC-47rArlX15kmpZv2TxThM0,17026
16
- servalcat/spa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- servalcat/spa/fofc.py,sha256=J1Zv8REWS931aP0W-D7HWuadMSdMdSLWAe6rg2xXNxw,22650
18
- servalcat/spa/fsc.py,sha256=rxynKDqMjoX8w7i4Ub4l7DQ8gRFXsthGn0AWykQvsBw,17663
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=NX3tC8cePXfCsJVqHvZ2IB_VhOOdYSgDVZ7lmCJov9w,49553
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=OiycZdfHkNwIzvXRIJlIrOTM216J7INVhVn0OnuFOjE,29709
28
- servalcat/utils/generate_operators.py,sha256=fCrcTcciRn-6fpFtHYvf1oPXAObjuqR3WQejz5d0RrA,10980
29
- servalcat/utils/hkl.py,sha256=bgZXDs6V6Nnwta5zJykn75iupLAv38UTbdzwO26jM14,28465
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=cqISbfdYm1Aixlvf7XMb9F3SAG1chq6E2I53ezjdOoc,30610
33
- servalcat/utils/refmac.py,sha256=LvynWy0D110Ikk9YzVMGfAZSj0vlBNEL-TAzmTnCF_Y,30814
34
- servalcat/utils/restraints.py,sha256=BeWa-PQEuaaInE_qU9oFC5W-pX9imIvnhMxWzkz1Wk4,36804
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=OixZuMkCanLn4L3g7CZSVkNzhYVMwUgqPBRcZnwWQ-0,11323
38
- servalcat/xtal/run_refmac_small.py,sha256=_Rw7wz7_yAlQgDqjJ_njeK6ZqN_r7KAakoor9WeNhxI,10634
39
- servalcat/xtal/sigmaa.py,sha256=Xd4lfOu9lwhSrSGxEe_bF3NhSEV6zBXkNG45v3XAC4U,66206
40
- servalcat-0.4.72.dist-info/METADATA,sha256=TZYkYT2ZTIau48irzZGbtp_ceVKiJm0iTG0N8x5MPn8,2741
41
- servalcat-0.4.72.dist-info/WHEEL,sha256=owM-S7rQt6gHQXmDyaa4ymDDT4eD88CNppuyx1VuwHU,103
42
- servalcat-0.4.72.dist-info/entry_points.txt,sha256=G1mDxhOCdF3umYz4k0kfwJbSdYSKqhvQdGCmrP8FRAY,111
43
- servalcat-0.4.72.dist-info/licenses/LICENSE,sha256=JoTeFzAOCkNGhvHsf4r2BFIHpLRXo_4EsrnOZV58XVA,17098
44
- servalcat-0.4.72.dist-info/RECORD,,