servalcat 0.4.60__tar.gz → 0.4.72__tar.gz

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.

Files changed (432) hide show
  1. {servalcat-0.4.60 → servalcat-0.4.72}/CMakeLists.txt +2 -2
  2. {servalcat-0.4.60 → servalcat-0.4.72}/PKG-INFO +3 -3
  3. {servalcat-0.4.60 → servalcat-0.4.72}/README.md +1 -1
  4. {servalcat-0.4.60 → servalcat-0.4.72}/pyproject.toml +3 -7
  5. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/__init__.py +2 -2
  6. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/refine.py +130 -42
  7. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/refine_geom.py +38 -31
  8. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/refine_spa.py +33 -24
  9. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/refine_xtal.py +25 -18
  10. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/spa.py +3 -2
  11. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/xtal.py +1 -1
  12. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refmac/exte.py +4 -6
  13. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refmac/refmac_keywords.py +123 -22
  14. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refmac/refmac_wrapper.py +22 -14
  15. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/fofc.py +1 -1
  16. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/run_refmac.py +8 -7
  17. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/commands.py +126 -6
  18. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/fileio.py +14 -25
  19. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/hkl.py +5 -4
  20. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/maps.py +10 -5
  21. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/model.py +12 -17
  22. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/refmac.py +9 -15
  23. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/restraints.py +173 -6
  24. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/xtal/sigmaa.py +22 -11
  25. servalcat-0.4.72/src/ext.cpp +71 -0
  26. {servalcat-0.4.60 → servalcat-0.4.72}/src/intensity.cpp +2 -2
  27. {servalcat-0.4.60 → servalcat-0.4.72}/src/math.hpp +1 -7
  28. {servalcat-0.4.60 → servalcat-0.4.72}/src/refine/geom.hpp +139 -24
  29. {servalcat-0.4.60 → servalcat-0.4.72}/src/refine/ll.hpp +10 -8
  30. {servalcat-0.4.60 → servalcat-0.4.72}/src/refine.cpp +60 -22
  31. {servalcat-0.4.60 → servalcat-0.4.72}/tests/test_refine.py +1 -1
  32. {servalcat-0.4.60 → servalcat-0.4.72}/tests/test_spa.py +3 -3
  33. servalcat-0.4.60/MANIFEST.in +0 -3
  34. servalcat-0.4.60/src/ext.cpp +0 -48
  35. {servalcat-0.4.60 → servalcat-0.4.72}/LICENSE +0 -0
  36. {servalcat-0.4.60 → servalcat-0.4.72}/commit.sh +0 -0
  37. {servalcat-0.4.60 → servalcat-0.4.72}/docs/Makefile +0 -0
  38. {servalcat-0.4.60 → servalcat-0.4.72}/docs/commands.rst +0 -0
  39. {servalcat-0.4.60 → servalcat-0.4.72}/docs/conf.py +0 -0
  40. {servalcat-0.4.60 → servalcat-0.4.72}/docs/help/fofc.txt +0 -0
  41. {servalcat-0.4.60 → servalcat-0.4.72}/docs/help/refine_spa.txt +0 -0
  42. {servalcat-0.4.60 → servalcat-0.4.72}/docs/help/trim.txt +0 -0
  43. {servalcat-0.4.60 → servalcat-0.4.72}/docs/index.rst +0 -0
  44. {servalcat-0.4.60 → servalcat-0.4.72}/docs/overview.rst +0 -0
  45. {servalcat-0.4.60 → servalcat-0.4.72}/docs/requirements.txt +0 -0
  46. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa.rst +0 -0
  47. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/ab42.rst +0 -0
  48. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/chrmine.rst +0 -0
  49. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/chrmine_figs/ccpem_input-fs8.png +0 -0
  50. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/chrmine_figs/coot_113-fs8.png +0 -0
  51. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/chrmine_figs/refined_fsc_1.png +0 -0
  52. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/chrmine_figs/refined_fsc_2.png +0 -0
  53. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/index.rst +0 -0
  54. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/omitmap.rst +0 -0
  55. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/p4_figs/coot_fofc_omit_4sigma.png +0 -0
  56. {servalcat-0.4.60 → servalcat-0.4.72}/docs/spa_examples/p4_figs/pymol_fofc_omit_4sigma.png +0 -0
  57. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.APACHE +0 -0
  58. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.BSD +0 -0
  59. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.GPL +0 -0
  60. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.LGPL +0 -0
  61. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.MINPACK +0 -0
  62. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.MPL2 +0 -0
  63. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/COPYING.README +0 -0
  64. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Cholesky +0 -0
  65. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/CholmodSupport +0 -0
  66. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Core +0 -0
  67. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Dense +0 -0
  68. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Eigen +0 -0
  69. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Eigenvalues +0 -0
  70. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Geometry +0 -0
  71. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Householder +0 -0
  72. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/IterativeLinearSolvers +0 -0
  73. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Jacobi +0 -0
  74. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/KLUSupport +0 -0
  75. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/LU +0 -0
  76. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/MetisSupport +0 -0
  77. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/OrderingMethods +0 -0
  78. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/PaStiXSupport +0 -0
  79. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/PardisoSupport +0 -0
  80. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/QR +0 -0
  81. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/QtAlignedMalloc +0 -0
  82. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SPQRSupport +0 -0
  83. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SVD +0 -0
  84. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/Sparse +0 -0
  85. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SparseCholesky +0 -0
  86. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SparseCore +0 -0
  87. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SparseLU +0 -0
  88. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SparseQR +0 -0
  89. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/StdDeque +0 -0
  90. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/StdList +0 -0
  91. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/StdVector +0 -0
  92. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/SuperLUSupport +0 -0
  93. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/UmfPackSupport +0 -0
  94. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Cholesky/LDLT.h +0 -0
  95. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Cholesky/LLT.h +0 -0
  96. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +0 -0
  97. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +0 -0
  98. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ArithmeticSequence.h +0 -0
  99. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Array.h +0 -0
  100. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ArrayBase.h +0 -0
  101. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ArrayWrapper.h +0 -0
  102. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Assign.h +0 -0
  103. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/AssignEvaluator.h +0 -0
  104. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Assign_MKL.h +0 -0
  105. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/BandMatrix.h +0 -0
  106. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Block.h +0 -0
  107. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/BooleanRedux.h +0 -0
  108. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CommaInitializer.h +0 -0
  109. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ConditionEstimator.h +0 -0
  110. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CoreEvaluators.h +0 -0
  111. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CoreIterators.h +0 -0
  112. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CwiseBinaryOp.h +0 -0
  113. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CwiseNullaryOp.h +0 -0
  114. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CwiseTernaryOp.h +0 -0
  115. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CwiseUnaryOp.h +0 -0
  116. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/CwiseUnaryView.h +0 -0
  117. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/DenseBase.h +0 -0
  118. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/DenseCoeffsBase.h +0 -0
  119. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/DenseStorage.h +0 -0
  120. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Diagonal.h +0 -0
  121. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/DiagonalMatrix.h +0 -0
  122. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/DiagonalProduct.h +0 -0
  123. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Dot.h +0 -0
  124. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/EigenBase.h +0 -0
  125. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ForceAlignedAccess.h +0 -0
  126. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Fuzzy.h +0 -0
  127. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/GeneralProduct.h +0 -0
  128. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/GenericPacketMath.h +0 -0
  129. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/GlobalFunctions.h +0 -0
  130. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/IO.h +0 -0
  131. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/IndexedView.h +0 -0
  132. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Inverse.h +0 -0
  133. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Map.h +0 -0
  134. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/MapBase.h +0 -0
  135. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/MathFunctions.h +0 -0
  136. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/MathFunctionsImpl.h +0 -0
  137. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Matrix.h +0 -0
  138. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/MatrixBase.h +0 -0
  139. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/NestByValue.h +0 -0
  140. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/NoAlias.h +0 -0
  141. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/NumTraits.h +0 -0
  142. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/PartialReduxEvaluator.h +0 -0
  143. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/PermutationMatrix.h +0 -0
  144. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/PlainObjectBase.h +0 -0
  145. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Product.h +0 -0
  146. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ProductEvaluators.h +0 -0
  147. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Random.h +0 -0
  148. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Redux.h +0 -0
  149. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Ref.h +0 -0
  150. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Replicate.h +0 -0
  151. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Reshaped.h +0 -0
  152. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/ReturnByValue.h +0 -0
  153. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Reverse.h +0 -0
  154. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Select.h +0 -0
  155. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/SelfAdjointView.h +0 -0
  156. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +0 -0
  157. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Solve.h +0 -0
  158. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/SolveTriangular.h +0 -0
  159. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/SolverBase.h +0 -0
  160. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/StableNorm.h +0 -0
  161. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/StlIterators.h +0 -0
  162. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Stride.h +0 -0
  163. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Swap.h +0 -0
  164. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Transpose.h +0 -0
  165. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Transpositions.h +0 -0
  166. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/TriangularMatrix.h +0 -0
  167. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/VectorBlock.h +0 -0
  168. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/VectorwiseOp.h +0 -0
  169. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/Visitor.h +0 -0
  170. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX/Complex.h +0 -0
  171. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +0 -0
  172. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +0 -0
  173. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +0 -0
  174. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX512/Complex.h +0 -0
  175. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +0 -0
  176. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +0 -0
  177. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +0 -0
  178. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +0 -0
  179. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +0 -0
  180. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +0 -0
  181. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +0 -0
  182. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +0 -0
  183. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +0 -0
  184. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -0
  185. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/BFloat16.h +0 -0
  186. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +0 -0
  187. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +0 -0
  188. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +0 -0
  189. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/Half.h +0 -0
  190. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/Settings.h +0 -0
  191. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -0
  192. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +0 -0
  193. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +0 -0
  194. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +0 -0
  195. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +0 -0
  196. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/MSA/Complex.h +0 -0
  197. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +0 -0
  198. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +0 -0
  199. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/NEON/Complex.h +0 -0
  200. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +0 -0
  201. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +0 -0
  202. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +0 -0
  203. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +0 -0
  204. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SSE/Complex.h +0 -0
  205. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +0 -0
  206. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +0 -0
  207. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +0 -0
  208. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +0 -0
  209. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +0 -0
  210. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +0 -0
  211. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +0 -0
  212. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +0 -0
  213. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +0 -0
  214. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -0
  215. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +0 -0
  216. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/ZVector/Complex.h +0 -0
  217. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +0 -0
  218. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +0 -0
  219. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +0 -0
  220. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/functors/BinaryFunctors.h +0 -0
  221. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/functors/NullaryFunctors.h +0 -0
  222. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/functors/StlFunctors.h +0 -0
  223. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/functors/TernaryFunctors.h +0 -0
  224. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/functors/UnaryFunctors.h +0 -0
  225. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +0 -0
  226. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +0 -0
  227. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +0 -0
  228. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +0 -0
  229. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +0 -0
  230. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +0 -0
  231. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +0 -0
  232. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/Parallelizer.h +0 -0
  233. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +0 -0
  234. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +0 -0
  235. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +0 -0
  236. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +0 -0
  237. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/SelfadjointProduct.h +0 -0
  238. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +0 -0
  239. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +0 -0
  240. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +0 -0
  241. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +0 -0
  242. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +0 -0
  243. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +0 -0
  244. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +0 -0
  245. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/products/TriangularSolverVector.h +0 -0
  246. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/BlasUtil.h +0 -0
  247. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/ConfigureVectorization.h +0 -0
  248. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/Constants.h +0 -0
  249. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +0 -0
  250. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/ForwardDeclarations.h +0 -0
  251. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/IndexedViewHelper.h +0 -0
  252. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/IntegralConstant.h +0 -0
  253. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/MKL_support.h +0 -0
  254. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/Macros.h +0 -0
  255. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/Memory.h +0 -0
  256. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/Meta.h +0 -0
  257. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/NonMPL2.h +0 -0
  258. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +0 -0
  259. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/ReshapedHelper.h +0 -0
  260. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/StaticAssert.h +0 -0
  261. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/SymbolicIndex.h +0 -0
  262. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Core/util/XprHelper.h +0 -0
  263. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +0 -0
  264. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +0 -0
  265. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +0 -0
  266. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/EigenSolver.h +0 -0
  267. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +0 -0
  268. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +0 -0
  269. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +0 -0
  270. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +0 -0
  271. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/RealQZ.h +0 -0
  272. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/RealSchur.h +0 -0
  273. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +0 -0
  274. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +0 -0
  275. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +0 -0
  276. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +0 -0
  277. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/AlignedBox.h +0 -0
  278. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/AngleAxis.h +0 -0
  279. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/EulerAngles.h +0 -0
  280. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Homogeneous.h +0 -0
  281. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Hyperplane.h +0 -0
  282. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -0
  283. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -0
  284. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Quaternion.h +0 -0
  285. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Rotation2D.h +0 -0
  286. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/RotationBase.h +0 -0
  287. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Scaling.h +0 -0
  288. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Transform.h +0 -0
  289. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Translation.h +0 -0
  290. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/Umeyama.h +0 -0
  291. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -0
  292. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -0
  293. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Householder/Householder.h +0 -0
  294. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -0
  295. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +0 -0
  296. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +0 -0
  297. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +0 -0
  298. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +0 -0
  299. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +0 -0
  300. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +0 -0
  301. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +0 -0
  302. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +0 -0
  303. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/Jacobi/Jacobi.h +0 -0
  304. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/KLUSupport/KLUSupport.h +0 -0
  305. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/LU/Determinant.h +0 -0
  306. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/LU/FullPivLU.h +0 -0
  307. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/LU/InverseImpl.h +0 -0
  308. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/LU/PartialPivLU.h +0 -0
  309. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +0 -0
  310. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -0
  311. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/MetisSupport/MetisSupport.h +0 -0
  312. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/OrderingMethods/Amd.h +0 -0
  313. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +0 -0
  314. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/OrderingMethods/Ordering.h +0 -0
  315. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +0 -0
  316. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +0 -0
  317. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -0
  318. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +0 -0
  319. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -0
  320. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -0
  321. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/QR/HouseholderQR.h +0 -0
  322. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +0 -0
  323. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +0 -0
  324. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SVD/BDCSVD.h +0 -0
  325. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SVD/JacobiSVD.h +0 -0
  326. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +0 -0
  327. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SVD/SVDBase.h +0 -0
  328. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -0
  329. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +0 -0
  330. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +0 -0
  331. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/AmbiVector.h +0 -0
  332. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/CompressedStorage.h +0 -0
  333. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +0 -0
  334. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -0
  335. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseAssign.h +0 -0
  336. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseBlock.h +0 -0
  337. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseColEtree.h +0 -0
  338. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +0 -0
  339. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +0 -0
  340. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +0 -0
  341. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +0 -0
  342. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +0 -0
  343. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseDot.h +0 -0
  344. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseFuzzy.h +0 -0
  345. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseMap.h +0 -0
  346. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseMatrix.h +0 -0
  347. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +0 -0
  348. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparsePermutation.h +0 -0
  349. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseProduct.h +0 -0
  350. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseRedux.h +0 -0
  351. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseRef.h +0 -0
  352. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +0 -0
  353. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseSolverBase.h +0 -0
  354. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +0 -0
  355. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseTranspose.h +0 -0
  356. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseTriangularView.h +0 -0
  357. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseUtil.h +0 -0
  358. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseVector.h +0 -0
  359. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/SparseView.h +0 -0
  360. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseCore/TriangularSolver.h +0 -0
  361. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU.h +0 -0
  362. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLUImpl.h +0 -0
  363. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +0 -0
  364. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +0 -0
  365. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +0 -0
  366. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +0 -0
  367. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +0 -0
  368. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +0 -0
  369. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +0 -0
  370. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -0
  371. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +0 -0
  372. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +0 -0
  373. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +0 -0
  374. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +0 -0
  375. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +0 -0
  376. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +0 -0
  377. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +0 -0
  378. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SparseQR/SparseQR.h +0 -0
  379. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/StlSupport/StdDeque.h +0 -0
  380. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/StlSupport/StdList.h +0 -0
  381. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/StlSupport/StdVector.h +0 -0
  382. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/StlSupport/details.h +0 -0
  383. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +0 -0
  384. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +0 -0
  385. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/Image.h +0 -0
  386. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/Kernel.h +0 -0
  387. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/RealSvd2x2.h +0 -0
  388. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/blas.h +0 -0
  389. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/lapack.h +0 -0
  390. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/lapacke.h +0 -0
  391. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/misc/lapacke_mangling.h +0 -0
  392. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -0
  393. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -0
  394. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/BlockMethods.h +0 -0
  395. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -0
  396. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -0
  397. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -0
  398. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -0
  399. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -0
  400. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -0
  401. {servalcat-0.4.60 → servalcat-0.4.72}/eigen/README.md +0 -0
  402. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/__main__.py +0 -0
  403. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/__init__.py +0 -0
  404. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refine/cgsolve.py +0 -0
  405. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/refmac/__init__.py +0 -0
  406. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/__init__.py +0 -0
  407. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/fsc.py +0 -0
  408. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/localcc.py +0 -0
  409. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/realspcc_from_var.py +0 -0
  410. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/shift_maps.py +0 -0
  411. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/shiftback.py +0 -0
  412. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/spa/translate.py +0 -0
  413. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/__init__.py +0 -0
  414. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/generate_operators.py +0 -0
  415. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/logger.py +0 -0
  416. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/utils/symmetry.py +0 -0
  417. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/xtal/__init__.py +0 -0
  418. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/xtal/french_wilson.py +0 -0
  419. {servalcat-0.4.60 → servalcat-0.4.72}/servalcat/xtal/run_refmac_small.py +0 -0
  420. {servalcat-0.4.60 → servalcat-0.4.72}/src/amplitude.cpp +0 -0
  421. {servalcat-0.4.60 → servalcat-0.4.72}/src/lambertw.hpp +0 -0
  422. {servalcat-0.4.60 → servalcat-0.4.72}/src/refine/cgsolve.hpp +0 -0
  423. {servalcat-0.4.60 → servalcat-0.4.72}/src/refine/ncsr.hpp +0 -0
  424. {servalcat-0.4.60 → servalcat-0.4.72}/tests/5e5z/5e5z.mtz.gz +0 -0
  425. {servalcat-0.4.60 → servalcat-0.4.72}/tests/5e5z/5e5z.pdb.gz +0 -0
  426. {servalcat-0.4.60 → servalcat-0.4.72}/tests/biotin/biotin_talos.mtz +0 -0
  427. {servalcat-0.4.60 → servalcat-0.4.72}/tests/biotin/biotin_talos.pdb +0 -0
  428. {servalcat-0.4.60 → servalcat-0.4.72}/tests/dict/acedrg_link_4D4-MS6.cif +0 -0
  429. {servalcat-0.4.60 → servalcat-0.4.72}/tests/dict/acedrg_link_MS6-GLY.cif +0 -0
  430. {servalcat-0.4.60 → servalcat-0.4.72}/tests/test_for_ci.py +0 -0
  431. {servalcat-0.4.60 → servalcat-0.4.72}/tests/test_misc.py +0 -0
  432. {servalcat-0.4.60 → servalcat-0.4.72}/tests/test_xtal.py +0 -0
@@ -58,7 +58,7 @@ if (DEFINED SKBUILD)
58
58
  # For now, locate it relatively to pybind11.
59
59
  get_filename_component(gemmi_ROOT "${pybind11_INCLUDE_DIR}/../../../.." ABSOLUTE)
60
60
  endif()
61
- find_package(gemmi 0.6.5 CONFIG REQUIRED)
61
+ find_package(gemmi 0.6.6 CONFIG REQUIRED)
62
62
  else()
63
63
  set(USE_PYTHON ON CACHE BOOL "" FORCE)
64
64
  message(STATUS "")
@@ -71,7 +71,7 @@ else()
71
71
  FetchContent_Declare(
72
72
  gemmi
73
73
  GIT_REPOSITORY https://github.com/project-gemmi/gemmi.git
74
- GIT_TAG v0.6.5
74
+ GIT_TAG v0.6.6
75
75
  )
76
76
  FetchContent_GetProperties(gemmi)
77
77
  if (NOT gemmi_POPULATED)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: servalcat
3
- Version: 0.4.60
3
+ Version: 0.4.72
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
@@ -10,7 +10,7 @@ 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.5
13
+ Requires-Dist: gemmi==0.6.6
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.5](https://github.com/project-gemmi/gemmi/releases/tag/v0.6.5). 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.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.
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
 
@@ -25,7 +25,7 @@ pip install servalcat
25
25
  ```
26
26
  will install the stable version.
27
27
 
28
- The required GEMMI version is now [v0.6.5](https://github.com/project-gemmi/gemmi/releases/tag/v0.6.5). 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.
28
+ 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.
29
29
 
30
30
  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.
31
31
 
@@ -1,6 +1,6 @@
1
1
  [build-system]
2
- requires = ["scikit-build-core~=0.8.0", "pybind11>=2.6.2",
3
- "gemmi @ git+https://github.com/project-gemmi/gemmi.git@v0.6.5",
2
+ requires = ["scikit-build-core~=0.9.0", "pybind11>=2.6.2",
3
+ "gemmi @ git+https://github.com/project-gemmi/gemmi.git@v0.6.6",
4
4
  ]
5
5
  build-backend = "scikit_build_core.build"
6
6
 
@@ -9,8 +9,7 @@ build-backend = "scikit_build_core.build"
9
9
  name = "servalcat"
10
10
  dynamic = ["version"]
11
11
  requires-python = ">=3.7"
12
- dependencies = ['packaging', 'numpy>=1.15', 'scipy', 'pandas>=1.1.0', 'gemmi==0.6.5']
13
- #'gemmi @ git+https://github.com/project-gemmi/gemmi.git@09e56c26305da79dd36580f4e4da579e1ae4559b']
12
+ dependencies = ['packaging', 'numpy>=1.15', 'scipy', 'pandas>=1.1.0', 'gemmi==0.6.6']
14
13
  description="Structure refinement and validation for crystallography and single particle analysis"
15
14
  readme = "README.md"
16
15
  authors = [
@@ -29,9 +28,6 @@ refmacat = "servalcat.refmac.refmac_wrapper:command_line"
29
28
  wheel.expand-macos-universal-tags = true # not sure if this is useful
30
29
  cmake.build-type = "Release"
31
30
  cmake.verbose = true
32
- #recursive-include src/ *.hpp *.cpp
33
- #graft eigen/Eigen/
34
- #include eigen/README.md eigen/COPYING*
35
31
  sdist.include = ["eigen/Eigen", "eigen/README.md", "eigen/COPYING*"]
36
32
  sdist.exclude = [".*", "eigen/", "scripts/"]
37
33
 
@@ -6,5 +6,5 @@ This software is released under the
6
6
  Mozilla Public License, version 2.0; see LICENSE.
7
7
  """
8
8
 
9
- __version__ = '0.4.60'
10
- __date__ = '2024-02-26'
9
+ __version__ = '0.4.72'
10
+ __date__ = '2024-06-06'
@@ -10,13 +10,13 @@ import os
10
10
  import re
11
11
  import gemmi
12
12
  import numpy
13
+ import json
13
14
  import pandas
14
15
  import scipy.sparse
15
16
  import servalcat # for version
16
17
  from servalcat.utils import logger
17
18
  from servalcat import utils
18
19
  from servalcat.refmac import exte
19
- from servalcat.refmac.refmac_keywords import parse_keywords
20
20
  from servalcat import ext
21
21
  from . import cgsolve
22
22
  u_to_b = utils.model.u_to_b
@@ -29,7 +29,7 @@ b_to_u = utils.model.b_to_u
29
29
 
30
30
  class Geom:
31
31
  def __init__(self, st, topo, monlib, adpr_w=1, shake_rms=0,
32
- refmac_keywords=None, unrestrained=False, use_nucleus=False,
32
+ params=None, unrestrained=False, use_nucleus=False,
33
33
  ncslist=None, atom_pos=None):
34
34
  self.st = st
35
35
  self.atoms = [None for _ in range(self.st[0].count_atom_sites())]
@@ -48,26 +48,29 @@ class Geom:
48
48
  n_sym = len(images) + 1
49
49
  self.geom.specials.append(ext.Geometry.Special(atom, matp, mata, n_sym))
50
50
  self.adpr_w = adpr_w
51
+ self.occr_w = 1.
51
52
  self.unrestrained = unrestrained
52
53
  if shake_rms > 0:
53
54
  numpy.random.seed(0)
54
55
  utils.model.shake_structure(self.st, shake_rms, copy=False)
55
- utils.fileio.write_model(self.st, "shaken", pdb=True, cif=True)
56
+ #utils.fileio.write_model(self.st, "shaken", pdb=True, cif=True)
57
+ self.use_nucleus = use_nucleus
58
+ self.calc_kwds = {"use_nucleus": self.use_nucleus}
59
+ if params is None:
60
+ params = {}
61
+ exte.read_external_restraints(params.get("exte", []), self.st, self.geom)
62
+ for k in ("wbond", "wangle", "wtors", "wplane", "wchir", "wvdw", "wncs"):
63
+ if k in params:
64
+ self.calc_kwds[k] = params[k]
65
+ logger.writeln("setting geometry weight {}= {}".format(k, params[k]))
66
+ inc_tors, exc_tors = utils.restraints.make_torsion_rules(params.get("restr", {}))
67
+ rtors = utils.restraints.select_restrained_torsions(monlib, inc_tors, exc_tors)
68
+ self.geom.mon_tors_names = rtors["monomer"]
69
+ self.geom.link_tors_names = rtors["link"]
70
+ self.group_occ = GroupOccupancy(self.st, params.get("occu"))
56
71
  if not self.unrestrained:
57
72
  self.geom.load_topo(topo)
58
73
  self.check_chemtypes(os.path.join(monlib.path(), "ener_lib.cif"), topo)
59
- self.use_nucleus = use_nucleus
60
- self.calc_kwds = {"use_nucleus": self.use_nucleus}
61
- if refmac_keywords:
62
- exte.read_external_restraints(refmac_keywords, self.st, self.geom)
63
- kwds = parse_keywords(refmac_keywords)
64
- for k in ("wbond", "wangle", "wtors", "wplane", "wchir", "wvdw", "wncs"):
65
- if k in kwds:
66
- self.calc_kwds[k] = kwds[k]
67
- logger.writeln("setting geometry weight {}= {}".format(k, kwds[k]))
68
- self.group_occ = GroupOccupancy(self.st, kwds.get("occu"))
69
- else:
70
- self.group_occ = GroupOccupancy(self.st, None)
71
74
  self.geom.finalize_restraints()
72
75
  self.outlier_sigmas = dict(bond=5, angle=5, torsion=5, vdw=5, ncs=5, chir=5, plane=5, staca=5, stacd=5, per_atom=5)
73
76
  self.parents = {}
@@ -104,20 +107,28 @@ class Geom:
104
107
  return self.geom.calc(check_only=target_only, **self.calc_kwds)
105
108
  def calc_adp_restraint(self, target_only):
106
109
  return self.geom.calc_adp_restraint(target_only, self.adpr_w)
107
- def calc_target(self, target_only, refine_xyz, adp_mode):
110
+ def calc_occ_restraint(self, target_only):
111
+ return self.geom.calc_occ_restraint(target_only, self.occr_w)
112
+ def calc_target(self, target_only, refine_xyz, adp_mode, use_occr):
108
113
  self.geom.clear_target()
109
114
  geom_x = self.calc(target_only) if refine_xyz else 0
110
115
  geom_a = self.calc_adp_restraint(target_only) if adp_mode > 0 else 0
116
+ geom_q = self.calc_occ_restraint(target_only) if use_occr > 0 else 0
111
117
  logger.writeln(" geom_x = {}".format(geom_x))
112
118
  logger.writeln(" geom_a = {}".format(geom_a))
113
- geom = geom_x + geom_a
119
+ logger.writeln(" geom_q = {}".format(geom_q))
120
+ geom = geom_x + geom_a + geom_q
114
121
  if not target_only:
115
122
  self.geom.spec_correction()
116
123
  return geom
117
124
 
118
- def show_model_stats(self, show_outliers=True):
119
- f0_x = self.calc(True)
120
- f0_a = self.calc_adp_restraint(True)
125
+ def show_model_stats(self, refine_xyz=True, adp_mode=1, use_occr=False, show_outliers=True):
126
+ if refine_xyz:
127
+ self.calc(True)
128
+ if adp_mode > 0:
129
+ self.calc_adp_restraint(True)
130
+ if use_occr:
131
+ self.calc_occ_restraint(True)
121
132
  ret = {"outliers": {}}
122
133
  if show_outliers:
123
134
  get_table = dict(bond=self.geom.reporting.get_bond_outliers,
@@ -184,10 +195,12 @@ class Geom:
184
195
  def show_binstats(df, cycle_number):
185
196
  forplot = []
186
197
  rlabs = [x for x in df if x.startswith("R")]
198
+ fsclabs = [x for x in df if x.startswith("fsc")]
187
199
  cclabs = [x for x in df if x.startswith("CC")]
188
200
  dlabs = [x for x in df if re.search("^D[0-9]*", x)]
189
201
  if "fsc_model" in df: forplot.append(["FSC", ["fsc_model"]])
190
202
  if rlabs: forplot.append(["R", rlabs])
203
+ if fsclabs: forplot.append(["FSC", fsclabs])
191
204
  if cclabs: forplot.append(["CC", cclabs])
192
205
  if dlabs: forplot.append(["ML parameters - D", dlabs])
193
206
  if "S" in df: forplot.append(["ML parameters - Sigma", ["S"]])
@@ -197,6 +210,29 @@ def show_binstats(df, cycle_number):
197
210
  logger.writeln(lstr)
198
211
  # show_binstats()
199
212
 
213
+ def convert_stats_to_dicts(stats):
214
+ tmp = []
215
+ for s in stats: # stats must be a list of dict
216
+ tmp.append({})
217
+ for k in s:
218
+ if k == "geom":
219
+ tmp[-1]["geom"] = {"summary": s["geom"]["summary"].to_dict()}
220
+ for kk in s["geom"]["outliers"]:
221
+ tmp[-1]["geom"].setdefault("outliers", {})[kk] = s["geom"]["outliers"][kk].to_dict(orient="records")
222
+ else:
223
+ tmp[-1][k] = s[k]
224
+ return tmp
225
+ # convert_stats_to_dicts()
226
+
227
+ def write_stats_json_safe(stats, json_out):
228
+ tmp = convert_stats_to_dicts(stats)
229
+ out_tmp = json_out + ".part"
230
+ with open(out_tmp, "w") as ofs:
231
+ json.dump(tmp, ofs, indent=2)
232
+ os.replace(out_tmp, json_out)
233
+ logger.writeln(f"Refinement statistics saved: {json_out}")
234
+ # write_stats_json_safe()
235
+
200
236
  class GroupOccupancy:
201
237
  # TODO max may not be one. should check multiplicity
202
238
  def __init__(self, st, params):
@@ -377,10 +413,11 @@ class GroupOccupancy:
377
413
 
378
414
  class Refine:
379
415
  def __init__(self, st, geom, ll=None, refine_xyz=True, adp_mode=1, refine_h=False, refine_occ=False,
380
- unrestrained=False, refmac_keywords=None):
416
+ unrestrained=False, params=None):
381
417
  assert adp_mode in (0, 1, 2) # 0=fix, 1=iso, 2=aniso
382
418
  assert geom is not None
383
419
  self.st = st # clone()?
420
+ self.st_traj = None
384
421
  self.atoms = geom.atoms # not a copy
385
422
  self.geom = geom
386
423
  self.ll = ll
@@ -388,11 +425,15 @@ class Refine:
388
425
  self.adp_mode = 0 if self.ll is None else adp_mode
389
426
  self.refine_xyz = refine_xyz
390
427
  self.refine_occ = refine_occ
428
+ self.use_occr = self.refine_occ # for now?
391
429
  self.unrestrained = unrestrained
392
430
  self.refine_h = refine_h
393
431
  self.h_inherit_parent_adp = self.adp_mode > 0 and not self.refine_h and self.st[0].has_hydrogen()
394
432
  if self.h_inherit_parent_adp:
395
433
  self.geom.set_h_parents()
434
+ if params and params.get("write_trajectory"):
435
+ self.st_traj = self.st.clone()
436
+ self.st_traj[-1].name = "0"
396
437
  assert self.geom.group_occ.groups or self.n_params() > 0
397
438
  # __init__()
398
439
 
@@ -513,7 +554,7 @@ class Refine:
513
554
  self.ll.update_fc()
514
555
 
515
556
  self.geom.setup_nonbonded(self.refine_xyz) # if refine_xyz=False, no need to do it every time
516
- self.geom.geom.setup_target(self.refine_xyz, self.adp_mode, self.refine_occ)
557
+ self.geom.geom.setup_target(self.refine_xyz, self.adp_mode, self.refine_occ, self.use_occr)
517
558
  logger.writeln("vdws = {}".format(len(self.geom.geom.vdws)))
518
559
 
519
560
  def get_x(self):
@@ -540,7 +581,7 @@ class Refine:
540
581
  N = self.n_params()
541
582
  geom = self.geom.calc_target(target_only,
542
583
  not self.unrestrained and self.refine_xyz,
543
- self.adp_mode)
584
+ self.adp_mode, self.use_occr)
544
585
  if self.ll is not None:
545
586
  ll = self.ll.calc_target()
546
587
  logger.writeln(" ll= {}".format(ll))
@@ -627,14 +668,17 @@ class Refine:
627
668
 
628
669
  return ret, shift_scale, f1
629
670
 
630
- def run_cycles(self, ncycles, weight=1, debug=False):
671
+ def run_cycles(self, ncycles, weight=1, weight_adjust=False, debug=False,
672
+ weight_adjust_bond_rmsz_range=(0.5, 1.), stats_json_out=None):
631
673
  self.print_weights()
632
674
  stats = [{"Ncyc": 0}]
633
675
  self.geom.setup_nonbonded(self.refine_xyz)
634
- self.geom.geom.setup_target(self.refine_xyz, self.adp_mode, self.refine_occ)
676
+ self.geom.geom.setup_target(self.refine_xyz, self.adp_mode, self.refine_occ, self.use_occr)
635
677
  logger.writeln("vdws = {}".format(len(self.geom.geom.vdws)))
636
- if self.refine_xyz and not self.unrestrained:
637
- stats[-1]["geom"] = self.geom.show_model_stats(show_outliers=True)["summary"]
678
+ stats[-1]["geom"] = self.geom.show_model_stats(refine_xyz=self.refine_xyz and not self.unrestrained,
679
+ adp_mode=self.adp_mode,
680
+ use_occr=self.refine_occ,
681
+ show_outliers=True)
638
682
  if self.ll is not None:
639
683
  self.ll.update_fc()
640
684
  self.ll.overall_scale()
@@ -645,18 +689,26 @@ class Refine:
645
689
  show_binstats(llstats["bin_stats"], 0)
646
690
  if self.adp_mode > 0:
647
691
  utils.model.adp_analysis(self.st)
692
+ if stats_json_out:
693
+ write_stats_json_safe(stats, stats_json_out)
648
694
  occ_refine_flag = self.ll is not None and self.geom.group_occ.groups and self.geom.group_occ.ncycle > 0
649
695
 
650
696
  for i in range(ncycles):
651
697
  logger.writeln("\n====== CYCLE {:2d} ======\n".format(i+1))
652
- if self.refine_xyz or self.adp_mode > 0:
698
+ logger.writeln(f" weight = {weight:.4e}")
699
+ if self.refine_xyz or self.adp_mode > 0 or self.refine_occ:
653
700
  is_ok, shift_scale, fval = self.run_cycle(weight=weight)
654
- stats.append({"Ncyc": len(stats), "shift_scale": shift_scale, "fval": fval, "fval_decreased": is_ok})
701
+ stats.append({"Ncyc": len(stats), "shift_scale": shift_scale, "fval": fval, "fval_decreased": is_ok,
702
+ "weight": weight})
703
+ elif occ_refine_flag:
704
+ stats.append({"Ncyc": len(stats)})
655
705
  if occ_refine_flag:
656
706
  stats[-1]["occ_refine"] = self.geom.group_occ.refine(self.ll, self.refine_h)
657
707
  if debug: utils.fileio.write_model(self.st, "refined_{:02d}".format(i+1), pdb=True)#, cif=True)
658
- if self.refine_xyz and not self.unrestrained:
659
- stats[-1]["geom"] = self.geom.show_model_stats(show_outliers=(i==ncycles-1))["summary"]
708
+ stats[-1]["geom"] = self.geom.show_model_stats(refine_xyz=self.refine_xyz and not self.unrestrained,
709
+ adp_mode=self.adp_mode,
710
+ use_occr=self.refine_occ,
711
+ show_outliers=(i==ncycles-1))
660
712
  if self.ll is not None:
661
713
  self.ll.overall_scale()
662
714
  f0 = self.ll.calc_target()
@@ -670,6 +722,22 @@ class Refine:
670
722
  show_binstats(llstats["bin_stats"], i+1)
671
723
  if self.adp_mode > 0:
672
724
  utils.model.adp_analysis(self.st)
725
+ if (weight_adjust and self.refine_xyz and not self.unrestrained and self.ll is not None and
726
+ len(stats) > 2 and "Bond distances, non H" in stats[-1]["geom"]["summary"].index):
727
+ rmsz = stats[-1]["geom"]["summary"]["r.m.s.Z"]["Bond distances, non H"]
728
+ rmsz0 = stats[-2]["geom"]["summary"]["r.m.s.Z"]["Bond distances, non H"]
729
+ if rmsz > weight_adjust_bond_rmsz_range[1] and rmsz > rmsz0:
730
+ weight /= 1.1
731
+ elif rmsz < weight_adjust_bond_rmsz_range[0] and rmsz0 < weight_adjust_bond_rmsz_range[0] and rmsz < rmsz0:
732
+ weight *= 1.3
733
+ elif rmsz > 1.5 * rmsz0:
734
+ weight /= 1.1
735
+ if self.st_traj is not None:
736
+ self.st_traj.add_model(self.st[0])
737
+ self.st_traj[-1].name = str(i+1)
738
+ if stats_json_out:
739
+ write_stats_json_safe(stats, stats_json_out)
740
+
673
741
  logger.writeln("")
674
742
 
675
743
  # Make table
@@ -685,8 +753,8 @@ class Refine:
685
753
  ("r.m.s.Z", "Bond distances, non H", "zBOND"),
686
754
  ("r.m.s.d.", "Bond angles, non H", "rmsANGL"),
687
755
  ("r.m.s.Z", "Bond angles, non H", "zANGL")):
688
- if k in d["geom"] and n in d["geom"][k]:
689
- x[l] = d["geom"][k].get(n)
756
+ if k in d["geom"]["summary"] and n in d["geom"]["summary"][k]:
757
+ x[l] = d["geom"]["summary"][k].get(n)
690
758
  geom_keys.add(l)
691
759
  tmp.append(x)
692
760
  df = pandas.DataFrame(tmp)
@@ -711,12 +779,20 @@ class Refine:
711
779
  lstr = utils.make_loggraph_str(df, "stats vs cycle", forplot,
712
780
  float_format="{:.4f}".format)
713
781
  logger.writeln(lstr)
714
- self.update_meta()
782
+ self.update_meta(stats[-1])
715
783
  return stats
716
784
 
717
- def update_meta(self):
785
+ def update_meta(self, stats):
718
786
  # TODO write stats. probably geom.reporting.get_summary_table should return with _refine_ls_restr.type names
719
- self.st.raw_remarks = []
787
+ # should remove st.mod_residues?
788
+ self.st.helices.clear()
789
+ self.st.sheets.clear()
790
+ raw_remarks = [f'REMARK 3',
791
+ f'REMARK 3 REFINEMENT.',
792
+ f'REMARK 3 PROGRAM : SERVALCAT {servalcat.__version__}',
793
+ f'REMARK 3 AUTHORS : YAMASHITA,MURSHUDOV',
794
+ f'REMARK 3',
795
+ ]
720
796
  si = gemmi.SoftwareItem()
721
797
  si.classification = gemmi.SoftwareItem.Classification.Refinement
722
798
  si.name = "Servalcat"
@@ -724,10 +800,22 @@ class Refine:
724
800
  si.date = servalcat.__date__
725
801
  self.st.meta.software = [si]
726
802
 
727
- self.st.meta.refinement = []
728
- #ri = gemmi.RefinementInfo()
729
- #rr = gemmi.RefinementInfo.Restr("")
730
- #ri.restr_stats.append(rr)
731
- #st.meta.refinement = [ri]
732
-
803
+ ri = gemmi.RefinementInfo()
804
+ if "geom" in stats:
805
+ restr_stats = []
806
+ raw_remarks.append("REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES COUNT RMS WEIGHT")
807
+ for k, n, l, pl in (("r.m.s.d.", "Bond distances, non H", "s_bond_nonh_d", "BOND LENGTHS REFINED ATOMS (A)"),
808
+ ("r.m.s.d.", "Bond angles, non H", "s_angle_nonh_d", "BOND ANGLES REFINED ATOMS (DEGREES)")):
809
+ if k in stats["geom"]["summary"] and n in stats["geom"]["summary"][k]:
810
+ rr = gemmi.RefinementInfo.Restr(l)
811
+ rr.dev_ideal = stats["geom"]["summary"][k].get(n)
812
+ rr.count = stats["geom"]["summary"]["N restraints"].get(n)
813
+ rr.weight = stats["geom"]["summary"]["Mn(sigma)"].get(n)
814
+ restr_stats.append(rr)
815
+ raw_remarks.append(f"REMARK 3 {pl}:{rr.count:6d} ;{rr.dev_ideal:6.3f} ;{rr.weight:6.3f}")
816
+ ri.restr_stats = restr_stats
817
+ raw_remarks.append("REMARK 3")
818
+ self.st.meta.refinement = [ri]
819
+ self.st.raw_remarks = raw_remarks
820
+
733
821
  # class Refine
@@ -14,7 +14,8 @@ import json
14
14
  import servalcat # for version
15
15
  from servalcat.utils import logger
16
16
  from servalcat import utils
17
- from servalcat.refine.refine import Geom, Refine
17
+ from servalcat.refine.refine import Geom, Refine, convert_stats_to_dicts
18
+ from servalcat.refmac import refmac_keywords
18
19
 
19
20
  def add_arguments(parser):
20
21
  group = parser.add_mutually_exclusive_group(required=True)
@@ -53,24 +54,32 @@ def parse_args(arg_list):
53
54
  # parse_args()
54
55
 
55
56
  def add_program_info_to_dictionary(block, comp_id, program_name="servalcat", descriptor="optimization tool"):
56
- tab = block.find("_pdbx_chem_comp_description_generator.", ["program_name", "program_version", "descriptor"])
57
- # just overwrite version if it's there
58
- for row in tab:
59
- if row.str(0) == program_name and row.str(2) == descriptor:
60
- row[1] = gemmi.cif.quote(servalcat.__version__)
61
- return
62
- loop = tab.loop
63
- if not loop:
64
- loop = block.init_loop("_pdbx_chem_comp_description_generator.", ["comp_id",
65
- "program_name",
66
- "program_version",
67
- "descriptor"])
57
+ # old acedrg used _pdbx_chem_comp_description_generator. and descriptor
58
+ # new acedrg (>280?) uses _acedrg_chem_comp_descriptor. and type
59
+ for tag, name in (("_acedrg_chem_comp_descriptor.", "type"),
60
+ ("_pdbx_chem_comp_description_generator.", "descriptor")):
61
+ tab = block.find(tag, ["program_name", "program_version", name])
62
+ if tab:
63
+ loop = tab.loop
64
+ # just overwrite version if it's there
65
+ for row in tab:
66
+ if row.str(0) == program_name and row.str(2) == descriptor:
67
+ row[1] = gemmi.cif.quote(servalcat.__version__)
68
+ return
69
+ break
70
+ else:
71
+ # it may be strange to say _acedrg in this case..
72
+ name = "type"
73
+ loop = block.init_loop("_acedrg_chem_comp_descriptor.", ["comp_id",
74
+ "program_name",
75
+ "program_version",
76
+ name])
68
77
  tags = [x[x.index(".")+1:] for x in loop.tags]
69
78
  row = ["" for _ in range(len(tags))]
70
79
  for tag, val in (("comp_id", comp_id),
71
80
  ("program_name", program_name),
72
81
  ("program_version", servalcat.__version__),
73
- ("descriptor", descriptor)):
82
+ (name, descriptor)):
74
83
  if tag in tags: row[tags.index(tag)] = val
75
84
  loop.add_row(gemmi.cif.quote_list(row))
76
85
  # add_program_info_to_dictionary()
@@ -122,18 +131,16 @@ def refine_and_update_dictionary(cif_in, monomer_dir, output_prefix, randomize=0
122
131
  doc.write_file(output_prefix + "_updated.cif", style=gemmi.cif.Style.Aligned)
123
132
  logger.writeln("Updated dictionary saved: {}".format(output_prefix + "_updated.cif"))
124
133
  with open(output_prefix + "_stats.json", "w") as ofs:
125
- for stats in all_stats:
126
- for s in stats:
127
- s["geom"] = s["geom"].to_dict()
128
- json.dump(all_stats, ofs, indent=2)
134
+ json.dump([convert_stats_to_dicts(x) for x in all_stats],
135
+ ofs, indent=2)
129
136
  logger.writeln("Refinement statistics saved: {}".format(ofs.name))
130
137
  # refine_and_update_dictionary()
131
138
 
132
- def refine_geom(model_in, monomer_dir, cif_files, h_change, ncycle, output_prefix, randomize, refmac_keywords,
139
+ def refine_geom(model_in, monomer_dir, cif_files, h_change, ncycle, output_prefix, randomize, params,
133
140
  find_links=False, use_ncsr=False):
134
141
  st = utils.fileio.read_structure(model_in)
135
142
  utils.model.setup_entities(st, clear=True, force_subchain_names=True, overwrite_entity_type=True)
136
- if st.ncs:
143
+ if not all(op.given for op in st.ncs):
137
144
  st2 = st.clone()
138
145
  logger.writeln("Take NCS constraints into account.")
139
146
  st2.expand_ncs(gemmi.HowToNameCopiedChain.Dup, merge_dist=0)
@@ -141,27 +148,26 @@ def refine_geom(model_in, monomer_dir, cif_files, h_change, ncycle, output_prefi
141
148
 
142
149
  monlib = utils.restraints.load_monomer_library(st, monomer_dir=monomer_dir,
143
150
  cif_files=cif_files,
144
- stop_for_unknowns=True)
151
+ stop_for_unknowns=True,
152
+ params=params)
145
153
  utils.restraints.find_and_fix_links(st, monlib, add_found=find_links) # should remove unknown id here?
146
154
  try:
147
- topo, metal_kws = utils.restraints.prepare_topology(st, monlib, h_change=h_change,
148
- check_hydrogen=(h_change==gemmi.HydrogenChange.NoChange))
155
+ topo, _ = utils.restraints.prepare_topology(st, monlib, h_change=h_change,
156
+ check_hydrogen=(h_change==gemmi.HydrogenChange.NoChange),
157
+ params=params)
149
158
  except RuntimeError as e:
150
159
  raise SystemExit("Error: {}".format(e))
151
- refmac_keywords = metal_kws + refmac_keywords
160
+
152
161
  if use_ncsr:
153
162
  ncslist = utils.restraints.prepare_ncs_restraints(st)
154
163
  else:
155
164
  ncslist = False
156
- geom = Geom(st, topo, monlib, shake_rms=randomize, refmac_keywords=refmac_keywords, ncslist=ncslist)
165
+ geom = Geom(st, topo, monlib, shake_rms=randomize, params=params, ncslist=ncslist)
157
166
  refiner = Refine(st, geom)
158
- stats = refiner.run_cycles(ncycle)
167
+ stats = refiner.run_cycles(ncycle,
168
+ stats_json_out=output_prefix + "_stats.json")
159
169
  refiner.st.name = output_prefix
160
170
  utils.fileio.write_model(refiner.st, output_prefix, pdb=True, cif=True)
161
- with open(output_prefix + "_stats.json", "w") as ofs:
162
- for s in stats: s["geom"] = s["geom"].to_dict()
163
- json.dump(stats, ofs, indent=2)
164
- logger.writeln("Refinement statistics saved: {}".format(ofs.name))
165
171
  # refine_geom()
166
172
 
167
173
  def main(args):
@@ -170,6 +176,7 @@ def main(args):
170
176
  if args.keyword_file: keywords.extend(l for f in sum(args.keyword_file, []) for l in open(f))
171
177
  decide_prefix = lambda f: utils.fileio.splitext(os.path.basename(f))[0] + "_refined"
172
178
  if args.model:
179
+ params = refmac_keywords.parse_keywords(keywords)
173
180
  if not args.output_prefix:
174
181
  args.output_prefix = decide_prefix(args.model)
175
182
  if args.ligand:
@@ -185,7 +192,7 @@ def main(args):
185
192
  ncycle=args.ncycle,
186
193
  output_prefix=args.output_prefix,
187
194
  randomize=args.randomize,
188
- refmac_keywords=keywords,
195
+ params=params,
189
196
  find_links=args.find_links,
190
197
  use_ncsr=args.ncsr)
191
198
  else: