servalcat 0.4.88__tar.gz → 0.4.99__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 (437) hide show
  1. {servalcat-0.4.88 → servalcat-0.4.99}/CMakeLists.txt +36 -16
  2. {servalcat-0.4.88 → servalcat-0.4.99}/PKG-INFO +4 -4
  3. {servalcat-0.4.88 → servalcat-0.4.99}/README.md +1 -1
  4. {servalcat-0.4.88 → servalcat-0.4.99}/pyproject.toml +11 -9
  5. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/__init__.py +2 -2
  6. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/refine.py +125 -42
  7. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/refine_geom.py +24 -11
  8. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/refine_spa.py +51 -30
  9. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/refine_xtal.py +20 -7
  10. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/spa.py +12 -4
  11. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/xtal.py +11 -8
  12. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refmac/refmac_wrapper.py +3 -11
  13. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/fofc.py +9 -3
  14. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/fsc.py +8 -10
  15. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/run_refmac.py +16 -11
  16. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/translate.py +2 -2
  17. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/commands.py +154 -4
  18. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/fileio.py +15 -8
  19. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/hkl.py +24 -22
  20. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/logger.py +25 -1
  21. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/maps.py +2 -2
  22. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/model.py +10 -10
  23. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/refmac.py +1 -1
  24. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/restraints.py +27 -28
  25. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/symmetry.py +5 -5
  26. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/xtal/french_wilson.py +7 -5
  27. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/xtal/sigmaa.py +52 -30
  28. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/xtal/twin.py +12 -6
  29. {servalcat-0.4.88 → servalcat-0.4.99}/src/amplitude.cpp +40 -22
  30. servalcat-0.4.99/src/array.h +18 -0
  31. {servalcat-0.4.88 → servalcat-0.4.99}/src/ext.cpp +10 -8
  32. {servalcat-0.4.88 → servalcat-0.4.99}/src/intensity.cpp +112 -65
  33. {servalcat-0.4.88 → servalcat-0.4.99}/src/math.hpp +14 -0
  34. {servalcat-0.4.88 → servalcat-0.4.99}/src/refine/cgsolve.hpp +16 -25
  35. {servalcat-0.4.88 → servalcat-0.4.99}/src/refine/geom.hpp +116 -38
  36. {servalcat-0.4.88 → servalcat-0.4.99}/src/refine/ll.hpp +79 -14
  37. {servalcat-0.4.88 → servalcat-0.4.99}/src/refine/ncsr.hpp +4 -1
  38. {servalcat-0.4.88 → servalcat-0.4.99}/src/refine.cpp +400 -307
  39. {servalcat-0.4.88 → servalcat-0.4.99}/src/twin.cpp +127 -125
  40. servalcat-0.4.99/tests/biotin/biotin_talos.cif +1328 -0
  41. servalcat-0.4.99/tests/biotin/biotin_talos.hkl +960 -0
  42. servalcat-0.4.99/tests/biotin/biotin_talos.ins +38 -0
  43. servalcat-0.4.99/tests/test_refine.py +92 -0
  44. {servalcat-0.4.88 → servalcat-0.4.99}/tests/test_spa.py +2 -2
  45. servalcat-0.4.88/tests/test_refine.py +0 -55
  46. {servalcat-0.4.88 → servalcat-0.4.99}/LICENSE +0 -0
  47. {servalcat-0.4.88 → servalcat-0.4.99}/commit.sh +0 -0
  48. {servalcat-0.4.88 → servalcat-0.4.99}/docs/Makefile +0 -0
  49. {servalcat-0.4.88 → servalcat-0.4.99}/docs/commands.rst +0 -0
  50. {servalcat-0.4.88 → servalcat-0.4.99}/docs/conf.py +0 -0
  51. {servalcat-0.4.88 → servalcat-0.4.99}/docs/help/fofc.txt +0 -0
  52. {servalcat-0.4.88 → servalcat-0.4.99}/docs/help/refine_spa.txt +0 -0
  53. {servalcat-0.4.88 → servalcat-0.4.99}/docs/help/trim.txt +0 -0
  54. {servalcat-0.4.88 → servalcat-0.4.99}/docs/index.rst +0 -0
  55. {servalcat-0.4.88 → servalcat-0.4.99}/docs/overview.rst +0 -0
  56. {servalcat-0.4.88 → servalcat-0.4.99}/docs/requirements.txt +0 -0
  57. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa.rst +0 -0
  58. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/ab42.rst +0 -0
  59. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/chrmine.rst +0 -0
  60. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/chrmine_figs/ccpem_input-fs8.png +0 -0
  61. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/chrmine_figs/coot_113-fs8.png +0 -0
  62. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/chrmine_figs/refined_fsc_1.png +0 -0
  63. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/chrmine_figs/refined_fsc_2.png +0 -0
  64. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/index.rst +0 -0
  65. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/omitmap.rst +0 -0
  66. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/p4_figs/coot_fofc_omit_4sigma.png +0 -0
  67. {servalcat-0.4.88 → servalcat-0.4.99}/docs/spa_examples/p4_figs/pymol_fofc_omit_4sigma.png +0 -0
  68. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.APACHE +0 -0
  69. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.BSD +0 -0
  70. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.GPL +0 -0
  71. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.LGPL +0 -0
  72. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.MINPACK +0 -0
  73. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.MPL2 +0 -0
  74. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/COPYING.README +0 -0
  75. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Cholesky +0 -0
  76. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/CholmodSupport +0 -0
  77. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Core +0 -0
  78. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Dense +0 -0
  79. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Eigen +0 -0
  80. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Eigenvalues +0 -0
  81. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Geometry +0 -0
  82. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Householder +0 -0
  83. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/IterativeLinearSolvers +0 -0
  84. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Jacobi +0 -0
  85. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/KLUSupport +0 -0
  86. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/LU +0 -0
  87. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/MetisSupport +0 -0
  88. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/OrderingMethods +0 -0
  89. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/PaStiXSupport +0 -0
  90. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/PardisoSupport +0 -0
  91. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/QR +0 -0
  92. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/QtAlignedMalloc +0 -0
  93. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SPQRSupport +0 -0
  94. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SVD +0 -0
  95. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/Sparse +0 -0
  96. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SparseCholesky +0 -0
  97. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SparseCore +0 -0
  98. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SparseLU +0 -0
  99. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SparseQR +0 -0
  100. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/StdDeque +0 -0
  101. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/StdList +0 -0
  102. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/StdVector +0 -0
  103. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/SuperLUSupport +0 -0
  104. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/UmfPackSupport +0 -0
  105. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Cholesky/LDLT.h +0 -0
  106. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Cholesky/LLT.h +0 -0
  107. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +0 -0
  108. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +0 -0
  109. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ArithmeticSequence.h +0 -0
  110. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Array.h +0 -0
  111. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ArrayBase.h +0 -0
  112. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ArrayWrapper.h +0 -0
  113. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Assign.h +0 -0
  114. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/AssignEvaluator.h +0 -0
  115. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Assign_MKL.h +0 -0
  116. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/BandMatrix.h +0 -0
  117. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Block.h +0 -0
  118. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/BooleanRedux.h +0 -0
  119. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CommaInitializer.h +0 -0
  120. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ConditionEstimator.h +0 -0
  121. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CoreEvaluators.h +0 -0
  122. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CoreIterators.h +0 -0
  123. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CwiseBinaryOp.h +0 -0
  124. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CwiseNullaryOp.h +0 -0
  125. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CwiseTernaryOp.h +0 -0
  126. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CwiseUnaryOp.h +0 -0
  127. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/CwiseUnaryView.h +0 -0
  128. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/DenseBase.h +0 -0
  129. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/DenseCoeffsBase.h +0 -0
  130. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/DenseStorage.h +0 -0
  131. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Diagonal.h +0 -0
  132. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/DiagonalMatrix.h +0 -0
  133. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/DiagonalProduct.h +0 -0
  134. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Dot.h +0 -0
  135. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/EigenBase.h +0 -0
  136. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ForceAlignedAccess.h +0 -0
  137. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Fuzzy.h +0 -0
  138. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/GeneralProduct.h +0 -0
  139. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/GenericPacketMath.h +0 -0
  140. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/GlobalFunctions.h +0 -0
  141. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/IO.h +0 -0
  142. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/IndexedView.h +0 -0
  143. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Inverse.h +0 -0
  144. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Map.h +0 -0
  145. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/MapBase.h +0 -0
  146. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/MathFunctions.h +0 -0
  147. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/MathFunctionsImpl.h +0 -0
  148. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Matrix.h +0 -0
  149. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/MatrixBase.h +0 -0
  150. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/NestByValue.h +0 -0
  151. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/NoAlias.h +0 -0
  152. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/NumTraits.h +0 -0
  153. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/PartialReduxEvaluator.h +0 -0
  154. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/PermutationMatrix.h +0 -0
  155. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/PlainObjectBase.h +0 -0
  156. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Product.h +0 -0
  157. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ProductEvaluators.h +0 -0
  158. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Random.h +0 -0
  159. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Redux.h +0 -0
  160. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Ref.h +0 -0
  161. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Replicate.h +0 -0
  162. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Reshaped.h +0 -0
  163. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/ReturnByValue.h +0 -0
  164. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Reverse.h +0 -0
  165. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Select.h +0 -0
  166. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/SelfAdjointView.h +0 -0
  167. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +0 -0
  168. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Solve.h +0 -0
  169. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/SolveTriangular.h +0 -0
  170. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/SolverBase.h +0 -0
  171. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/StableNorm.h +0 -0
  172. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/StlIterators.h +0 -0
  173. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Stride.h +0 -0
  174. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Swap.h +0 -0
  175. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Transpose.h +0 -0
  176. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Transpositions.h +0 -0
  177. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/TriangularMatrix.h +0 -0
  178. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/VectorBlock.h +0 -0
  179. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/VectorwiseOp.h +0 -0
  180. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/Visitor.h +0 -0
  181. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX/Complex.h +0 -0
  182. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +0 -0
  183. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +0 -0
  184. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +0 -0
  185. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX512/Complex.h +0 -0
  186. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +0 -0
  187. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +0 -0
  188. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +0 -0
  189. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +0 -0
  190. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +0 -0
  191. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +0 -0
  192. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +0 -0
  193. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +0 -0
  194. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +0 -0
  195. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -0
  196. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/BFloat16.h +0 -0
  197. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +0 -0
  198. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +0 -0
  199. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +0 -0
  200. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/Half.h +0 -0
  201. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/Settings.h +0 -0
  202. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -0
  203. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +0 -0
  204. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +0 -0
  205. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +0 -0
  206. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +0 -0
  207. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/MSA/Complex.h +0 -0
  208. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +0 -0
  209. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +0 -0
  210. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/NEON/Complex.h +0 -0
  211. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +0 -0
  212. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +0 -0
  213. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +0 -0
  214. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +0 -0
  215. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SSE/Complex.h +0 -0
  216. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +0 -0
  217. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +0 -0
  218. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +0 -0
  219. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +0 -0
  220. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +0 -0
  221. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +0 -0
  222. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +0 -0
  223. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +0 -0
  224. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +0 -0
  225. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -0
  226. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +0 -0
  227. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/ZVector/Complex.h +0 -0
  228. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +0 -0
  229. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +0 -0
  230. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +0 -0
  231. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/functors/BinaryFunctors.h +0 -0
  232. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/functors/NullaryFunctors.h +0 -0
  233. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/functors/StlFunctors.h +0 -0
  234. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/functors/TernaryFunctors.h +0 -0
  235. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/functors/UnaryFunctors.h +0 -0
  236. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +0 -0
  237. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +0 -0
  238. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +0 -0
  239. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +0 -0
  240. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +0 -0
  241. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +0 -0
  242. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +0 -0
  243. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/Parallelizer.h +0 -0
  244. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +0 -0
  245. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +0 -0
  246. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +0 -0
  247. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +0 -0
  248. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/SelfadjointProduct.h +0 -0
  249. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +0 -0
  250. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +0 -0
  251. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +0 -0
  252. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +0 -0
  253. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +0 -0
  254. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +0 -0
  255. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +0 -0
  256. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/products/TriangularSolverVector.h +0 -0
  257. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/BlasUtil.h +0 -0
  258. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/ConfigureVectorization.h +0 -0
  259. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/Constants.h +0 -0
  260. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +0 -0
  261. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/ForwardDeclarations.h +0 -0
  262. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/IndexedViewHelper.h +0 -0
  263. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/IntegralConstant.h +0 -0
  264. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/MKL_support.h +0 -0
  265. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/Macros.h +0 -0
  266. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/Memory.h +0 -0
  267. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/Meta.h +0 -0
  268. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/NonMPL2.h +0 -0
  269. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +0 -0
  270. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/ReshapedHelper.h +0 -0
  271. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/StaticAssert.h +0 -0
  272. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/SymbolicIndex.h +0 -0
  273. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Core/util/XprHelper.h +0 -0
  274. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +0 -0
  275. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +0 -0
  276. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +0 -0
  277. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/EigenSolver.h +0 -0
  278. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +0 -0
  279. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +0 -0
  280. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +0 -0
  281. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +0 -0
  282. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/RealQZ.h +0 -0
  283. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/RealSchur.h +0 -0
  284. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +0 -0
  285. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +0 -0
  286. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +0 -0
  287. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +0 -0
  288. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/AlignedBox.h +0 -0
  289. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/AngleAxis.h +0 -0
  290. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/EulerAngles.h +0 -0
  291. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Homogeneous.h +0 -0
  292. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Hyperplane.h +0 -0
  293. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -0
  294. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -0
  295. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Quaternion.h +0 -0
  296. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Rotation2D.h +0 -0
  297. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/RotationBase.h +0 -0
  298. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Scaling.h +0 -0
  299. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Transform.h +0 -0
  300. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Translation.h +0 -0
  301. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/Umeyama.h +0 -0
  302. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -0
  303. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -0
  304. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Householder/Householder.h +0 -0
  305. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -0
  306. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +0 -0
  307. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +0 -0
  308. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +0 -0
  309. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +0 -0
  310. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +0 -0
  311. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +0 -0
  312. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +0 -0
  313. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +0 -0
  314. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/Jacobi/Jacobi.h +0 -0
  315. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/KLUSupport/KLUSupport.h +0 -0
  316. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/LU/Determinant.h +0 -0
  317. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/LU/FullPivLU.h +0 -0
  318. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/LU/InverseImpl.h +0 -0
  319. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/LU/PartialPivLU.h +0 -0
  320. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +0 -0
  321. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -0
  322. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/MetisSupport/MetisSupport.h +0 -0
  323. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/OrderingMethods/Amd.h +0 -0
  324. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +0 -0
  325. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/OrderingMethods/Ordering.h +0 -0
  326. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +0 -0
  327. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +0 -0
  328. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -0
  329. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +0 -0
  330. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -0
  331. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -0
  332. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/QR/HouseholderQR.h +0 -0
  333. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +0 -0
  334. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +0 -0
  335. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SVD/BDCSVD.h +0 -0
  336. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SVD/JacobiSVD.h +0 -0
  337. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +0 -0
  338. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SVD/SVDBase.h +0 -0
  339. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -0
  340. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +0 -0
  341. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +0 -0
  342. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/AmbiVector.h +0 -0
  343. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/CompressedStorage.h +0 -0
  344. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +0 -0
  345. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -0
  346. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseAssign.h +0 -0
  347. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseBlock.h +0 -0
  348. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseColEtree.h +0 -0
  349. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +0 -0
  350. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +0 -0
  351. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +0 -0
  352. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +0 -0
  353. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +0 -0
  354. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseDot.h +0 -0
  355. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseFuzzy.h +0 -0
  356. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseMap.h +0 -0
  357. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseMatrix.h +0 -0
  358. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +0 -0
  359. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparsePermutation.h +0 -0
  360. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseProduct.h +0 -0
  361. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseRedux.h +0 -0
  362. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseRef.h +0 -0
  363. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +0 -0
  364. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseSolverBase.h +0 -0
  365. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +0 -0
  366. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseTranspose.h +0 -0
  367. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseTriangularView.h +0 -0
  368. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseUtil.h +0 -0
  369. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseVector.h +0 -0
  370. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/SparseView.h +0 -0
  371. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseCore/TriangularSolver.h +0 -0
  372. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU.h +0 -0
  373. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLUImpl.h +0 -0
  374. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +0 -0
  375. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +0 -0
  376. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +0 -0
  377. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +0 -0
  378. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +0 -0
  379. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +0 -0
  380. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +0 -0
  381. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -0
  382. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +0 -0
  383. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +0 -0
  384. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +0 -0
  385. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +0 -0
  386. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +0 -0
  387. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +0 -0
  388. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +0 -0
  389. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SparseQR/SparseQR.h +0 -0
  390. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/StlSupport/StdDeque.h +0 -0
  391. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/StlSupport/StdList.h +0 -0
  392. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/StlSupport/StdVector.h +0 -0
  393. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/StlSupport/details.h +0 -0
  394. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +0 -0
  395. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +0 -0
  396. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/Image.h +0 -0
  397. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/Kernel.h +0 -0
  398. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/RealSvd2x2.h +0 -0
  399. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/blas.h +0 -0
  400. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/lapack.h +0 -0
  401. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/lapacke.h +0 -0
  402. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/misc/lapacke_mangling.h +0 -0
  403. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -0
  404. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -0
  405. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/BlockMethods.h +0 -0
  406. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -0
  407. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -0
  408. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -0
  409. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -0
  410. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -0
  411. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -0
  412. {servalcat-0.4.88 → servalcat-0.4.99}/eigen/README.md +0 -0
  413. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/__main__.py +0 -0
  414. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/__init__.py +0 -0
  415. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refine/cgsolve.py +0 -0
  416. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refmac/__init__.py +0 -0
  417. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refmac/exte.py +0 -0
  418. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/refmac/refmac_keywords.py +0 -0
  419. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/__init__.py +0 -0
  420. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/localcc.py +0 -0
  421. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/realspcc_from_var.py +0 -0
  422. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/shift_maps.py +0 -0
  423. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/spa/shiftback.py +0 -0
  424. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/__init__.py +0 -0
  425. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/utils/generate_operators.py +0 -0
  426. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/xtal/__init__.py +0 -0
  427. {servalcat-0.4.88 → servalcat-0.4.99}/servalcat/xtal/run_refmac_small.py +0 -0
  428. {servalcat-0.4.88 → servalcat-0.4.99}/src/lambertw.hpp +0 -0
  429. {servalcat-0.4.88 → servalcat-0.4.99}/tests/5e5z/5e5z.mtz.gz +0 -0
  430. {servalcat-0.4.88 → servalcat-0.4.99}/tests/5e5z/5e5z.pdb.gz +0 -0
  431. {servalcat-0.4.88 → servalcat-0.4.99}/tests/biotin/biotin_talos.mtz +0 -0
  432. {servalcat-0.4.88 → servalcat-0.4.99}/tests/biotin/biotin_talos.pdb +0 -0
  433. {servalcat-0.4.88 → servalcat-0.4.99}/tests/dict/acedrg_link_4D4-MS6.cif +0 -0
  434. {servalcat-0.4.88 → servalcat-0.4.99}/tests/dict/acedrg_link_MS6-GLY.cif +0 -0
  435. {servalcat-0.4.88 → servalcat-0.4.99}/tests/test_for_ci.py +0 -0
  436. {servalcat-0.4.88 → servalcat-0.4.99}/tests/test_misc.py +0 -0
  437. {servalcat-0.4.88 → servalcat-0.4.99}/tests/test_xtal.py +0 -0
@@ -8,11 +8,14 @@ string(REGEX REPLACE "__version__ = '(.+)'" "\\1" serval_version_str ${serval_ve
8
8
  project(servalcat LANGUAGES C CXX VERSION ${serval_version_str})
9
9
  message(STATUS "Servalcat version ${PROJECT_VERSION}")
10
10
 
11
+ option(SEARCH_INSTALLED_GEMMI "Search for gemmi-config.cmake and use it if found" ON)
12
+ option(INSTALL_GEMMI_IF_BUILT "Install also Python module gemmi, if it was built" OFF)
13
+
11
14
  include(GNUInstallDirs)
12
15
 
13
16
  if (DEFINED SKBUILD) # building with scikit-build-core (pip install)
14
17
  set(PYTHON_INSTALL_DIR "${SKBUILD_PLATLIB_DIR}")
15
- set(CMAKE_INSTALL_BINDIR "${SKBUILD_SCRIPTS_DIR}")
18
+ #set(CMAKE_INSTALL_BINDIR "${SKBUILD_SCRIPTS_DIR}")
16
19
  endif()
17
20
 
18
21
  set(CMAKE_CXX_EXTENSIONS OFF)
@@ -28,6 +31,7 @@ if (NOT CMAKE_BUILD_TYPE AND NOT USING_ENV_CXXFLAGS)
28
31
  FORCE)
29
32
  endif()
30
33
 
34
+
31
35
  # CMake >=3.18 has subcomponent Development.Module, scikit-build-core also has it
32
36
  if (${CMAKE_VERSION} VERSION_LESS 3.18 AND NOT SKBUILD)
33
37
  find_package(Python ${PYTHON_VERSION} REQUIRED COMPONENTS Interpreter Development)
@@ -35,13 +39,14 @@ else()
35
39
  find_package(Python ${PYTHON_VERSION} REQUIRED COMPONENTS Interpreter Development.Module)
36
40
  endif()
37
41
 
38
- # use pybind11-config (if available) to determine pybind11_DIR
39
- execute_process(COMMAND pybind11-config --cmakedir OUTPUT_VARIABLE pybind11_DIR)
40
- string(STRIP "${pybind11_DIR}" pybind11_DIR)
41
- find_package(pybind11 2.6 CONFIG REQUIRED)
42
- message(STATUS "Found pybind11 ${pybind11_VERSION}: ${pybind11_INCLUDE_DIRS}")
42
+ execute_process(
43
+ COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
44
+ OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE NB_DIR)
45
+ list(APPEND CMAKE_PREFIX_PATH "${NB_DIR}")
46
+ find_package(nanobind 2.2.0 CONFIG REQUIRED)
47
+ message(STATUS "Found nanobind ${nanobind_VERSION}: ${NB_DIR}")
43
48
 
44
- pybind11_add_module(ext src/ext.cpp src/intensity.cpp src/amplitude.cpp src/refine.cpp src/twin.cpp)
49
+ nanobind_add_module(ext src/ext.cpp src/intensity.cpp src/amplitude.cpp src/refine.cpp src/twin.cpp)
45
50
 
46
51
  if (EXISTS "${CMAKE_HOME_DIRECTORY}/eigen/Eigen")
47
52
  include_directories("${CMAKE_CURRENT_SOURCE_DIR}/eigen")
@@ -52,31 +57,46 @@ else()
52
57
  target_link_libraries(ext PRIVATE Eigen3::Eigen)
53
58
  endif()
54
59
 
55
- if (DEFINED SKBUILD)
56
- if (WIN32)
57
- # Gemmi is installed in an overlay directory in virtualenv.
58
- # For now, locate it relatively to pybind11.
59
- get_filename_component(gemmi_ROOT "${pybind11_INCLUDE_DIR}/../../../.." ABSOLUTE)
60
+ # We need either gemmi C++ development files (headers, library, cmake config)
61
+ # or gemmi sources. If we have the former with a shared library, it may require
62
+ # extra effort to make sure that the shared library is found at runtime.
63
+ if (SEARCH_INSTALLED_GEMMI)
64
+ find_package(gemmi 0.7.0 CONFIG)
65
+ endif()
66
+ if (gemmi_FOUND)
67
+ message(STATUS " based on config from ${gemmi_DIR}")
68
+ get_target_property(gemmi_TYPE gemmi::gemmi_cpp TYPE)
69
+ if (${gemmi_TYPE} STREQUAL "SHARED_LIBRARY")
70
+ message(STATUS "** Servalcat Python module will be linked with gemmi shared library. **")
71
+ message(STATUS "** The module may require 'repairing' to find the library at runtime. **")
60
72
  endif()
61
- find_package(gemmi 0.6.7 CONFIG REQUIRED)
62
73
  else()
63
74
  set(USE_PYTHON ON CACHE BOOL "" FORCE)
75
+ set(BUILD_GEMMI_PROGRAM OFF CACHE BOOL "" FORCE)
76
+ set(INSTALL_DEV_FILES OFF CACHE BOOL "" FORCE)
77
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
64
78
  message(STATUS "")
65
79
  message(STATUS "Configuring GEMMI...")
80
+ if (INSTALL_GEMMI_IF_BUILT AND NOT gemmi_FOUND)
81
+ set(exclude_or_not)
82
+ else()
83
+ set(exclude_or_not EXCLUDE_FROM_ALL)
84
+ endif()
66
85
  if (EXISTS "${CMAKE_HOME_DIRECTORY}/gemmi/include/gemmi")
67
86
  message(STATUS "Using ${CMAKE_HOME_DIRECTORY}/gemmi (internal copy).")
68
- add_subdirectory(gemmi EXCLUDE_FROM_ALL)
87
+ add_subdirectory(gemmi ${exclude_or_not})
69
88
  else()
89
+ message(STATUS "Using FetchContent...")
70
90
  include(FetchContent)
71
91
  FetchContent_Declare(
72
92
  gemmi
73
93
  GIT_REPOSITORY https://github.com/project-gemmi/gemmi.git
74
- GIT_TAG v0.6.7
94
+ GIT_TAG v0.7.0
75
95
  )
76
96
  FetchContent_GetProperties(gemmi)
77
97
  if (NOT gemmi_POPULATED)
78
98
  FetchContent_Populate(gemmi)
79
- add_subdirectory(${gemmi_SOURCE_DIR} ${gemmi_BINARY_DIR} EXCLUDE_FROM_ALL)
99
+ add_subdirectory(${gemmi_SOURCE_DIR} ${gemmi_BINARY_DIR} ${exclude_or_not})
80
100
  endif()
81
101
  endif()
82
102
  add_dependencies(ext gemmi_py)
@@ -1,16 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: servalcat
3
- Version: 0.4.88
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.7
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.7](https://github.com/project-gemmi/gemmi/releases/tag/v0.6.7). 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
 
@@ -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.7](https://github.com/project-gemmi/gemmi/releases/tag/v0.6.7). 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.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.
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,16 +1,13 @@
1
1
  [build-system]
2
- requires = ["scikit-build-core~=0.10.5", "pybind11>=2.6.2",
3
- "pybind11-stubgen~=2.5.1",
4
- "gemmi @ git+https://github.com/project-gemmi/gemmi.git@v0.6.7",
5
- ]
2
+ requires = ["scikit-build-core~=0.10.7", "nanobind >=2.2"]
6
3
  build-backend = "scikit_build_core.build"
7
4
 
8
5
  # https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
9
6
  [project]
10
7
  name = "servalcat"
11
8
  dynamic = ["version"]
12
- requires-python = ">=3.7"
13
- dependencies = ['packaging', 'numpy>=1.15', 'scipy', 'pandas>=1.1.0', 'gemmi==0.6.7']
9
+ requires-python = ">=3.8"
10
+ dependencies = ['packaging', 'numpy>=1.15', 'scipy', 'pandas>=1.1.0', 'gemmi==0.7.0']
14
11
  description="Structure refinement and validation for crystallography and single particle analysis"
15
12
  readme = "README.md"
16
13
  authors = [
@@ -28,7 +25,7 @@ refmacat = "servalcat.refmac.refmac_wrapper:command_line"
28
25
  #build-dir = "/tmp/gemmi_build2/{wheel_tag}"
29
26
  wheel.expand-macos-universal-tags = true # not sure if this is useful
30
27
  cmake.build-type = "Release"
31
- cmake.verbose = true
28
+ build.verbose = true
32
29
  sdist.include = ["eigen/Eigen", "eigen/README.md", "eigen/COPYING*"]
33
30
  sdist.exclude = [".*", "eigen/", "scripts/"]
34
31
 
@@ -39,9 +36,14 @@ input = "servalcat/__init__.py"
39
36
  [tool.cibuildwheel]
40
37
  # increase pip debugging output
41
38
  build-verbosity = 2
42
- test-command = "python {project}/tests/test_for_ci.py"
39
+ test-command = "python {project}/tests/test_for_ci.py" # comment out to test with gemmi build
43
40
  [tool.cibuildwheel.environment]
44
- SKBUILD_CMAKE_ARGS = '-DBUILD_SHARED_LIBS=OFF;-DINSTALL_DEV_FILES=ON;-DGENERATE_STUBS=OFF'
41
+ SKBUILD_CMAKE_ARGS = '-DGENERATE_STUBS=OFF' # -DINSTALL_GEMMI_IF_BUILT=1 to test with gemmi build
42
+
43
+ # Needed for full C++17 support on macOS
44
+ [tool.cibuildwheel.macos.environment]
45
+ MACOSX_DEPLOYMENT_TARGET = "10.14"
46
+ SKBUILD_CMAKE_ARGS = '-DGENERATE_STUBS=OFF' # -DINSTALL_GEMMI_IF_BUILT=1 to test with gemmi build
45
47
 
46
48
  [tool.codespell]
47
49
  skip = './eigen,./gemmi,*.pdb,*.crd,*.cif,*.mmcif,*.ent,*.log*,*.dic,tags,*.bak,*build*,*~'
@@ -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.88'
10
- __date__ = '2024-09-13'
9
+ __version__ = '0.4.99'
10
+ __date__ = '2024-12-04'
@@ -28,7 +28,7 @@ b_to_u = utils.model.b_to_u
28
28
  #atexit.register(profile.print_stats)
29
29
 
30
30
  class Geom:
31
- def __init__(self, st, topo, monlib, adpr_w=1, shake_rms=0,
31
+ def __init__(self, st, topo, monlib, adpr_w=1, occr_w=1, shake_rms=0,
32
32
  params=None, unrestrained=False, use_nucleus=False,
33
33
  ncslist=None, atom_pos=None):
34
34
  self.st = st
@@ -53,7 +53,7 @@ class Geom:
53
53
  n_sym = len(images) + 1
54
54
  self.geom.specials.append(ext.Geometry.Special(atom, matp, mata, n_sym))
55
55
  self.adpr_w = adpr_w
56
- self.occr_w = 1.
56
+ self.occr_w = occr_w
57
57
  self.unrestrained = unrestrained
58
58
  if shake_rms > 0:
59
59
  numpy.random.seed(0)
@@ -225,6 +225,26 @@ def write_stats_json_safe(stats, json_out):
225
225
  logger.writeln(f"Refinement statistics saved: {json_out}")
226
226
  # write_stats_json_safe()
227
227
 
228
+ def print_h_options(h_change, h_present, refine_h, hout, geom_only):
229
+ if not h_present:
230
+ h_change = gemmi.HydrogenChange.Remove
231
+ logger.writeln("Hydrogen related options")
232
+ logger.write(" use in refinement{}: hydrogen atoms ".format("" if geom_only else "/map calculation"))
233
+ logger.writeln({gemmi.HydrogenChange.ReAddButWater: "have been (re)generated",
234
+ gemmi.HydrogenChange.ReAdd: "(including water) have been (re)generated",
235
+ gemmi.HydrogenChange.ReAddKnown: "(except for rotatable) have been (re) generated",
236
+ gemmi.HydrogenChange.NoChange: "from the input model have been retained",
237
+ gemmi.HydrogenChange.Remove: "have either been removed or were not present"}[h_change])
238
+ if h_present:
239
+ logger.write(" target: hydrogen atoms will be ")
240
+ if geom_only or not refine_h:
241
+ logger.writeln("just optimized according to geometric restraints")
242
+ else:
243
+ logger.writeln("refined against experimental data")
244
+ logger.writeln(" in output model: " + ("written" if hout and h_present else "not written"))
245
+ logger.writeln("")
246
+ # print_hydrogen_options()
247
+
228
248
  class GroupOccupancy:
229
249
  # TODO max may not be one. should check multiplicity
230
250
  def __init__(self, st, params):
@@ -293,6 +313,7 @@ class GroupOccupancy:
293
313
  vals = []
294
314
  for _, atoms in self.groups:
295
315
  occ = numpy.mean([a.occ for a in atoms])
316
+ occ = min(1, max(1e-3, occ))
296
317
  vals.append(occ)
297
318
  for is_comp, idxes in self.consts:
298
319
  sum_occ = sum(vals[i] for i in idxes)
@@ -311,6 +332,7 @@ class GroupOccupancy:
311
332
  for p, (_, atoms) in zip(x, self.groups):
312
333
  for a in atoms:
313
334
  a.occ = p
335
+ #a.occ = max(1, min(1e-3, p))
314
336
 
315
337
  def target(self, x, ll, ls, u):
316
338
  self.set_x(x)
@@ -425,7 +447,7 @@ class Refine:
425
447
  self.geom.set_h_parents()
426
448
  if params and params.get("write_trajectory"):
427
449
  self.st_traj = self.st.clone()
428
- self.st_traj[-1].name = "0"
450
+ self.st_traj[-1].num = 0
429
451
  assert self.geom.group_occ.groups or self.n_params() > 0
430
452
  # __init__()
431
453
 
@@ -442,6 +464,9 @@ class Refine:
442
464
  logger.writeln(" sigmas: {}".format(" ".join("{:.2f}".format(x) for x in g.adpr_kl_sigs)))
443
465
  else:
444
466
  raise LookupError("unknown adpr_mode")
467
+ if self.refine_occ:
468
+ logger.writeln(" Occupancy restraints")
469
+ logger.writeln(" weight: {}".format(self.geom.occr_w))
445
470
 
446
471
  def scale_shifts(self, dx, scale):
447
472
  n_atoms = self.geom.n_refine_atoms
@@ -525,7 +550,7 @@ class Refine:
525
550
  elif self.adp_mode == 2:
526
551
  a = x[offset_b + 6 * j: offset_b + 6 * (j+1)]
527
552
  a = gemmi.SMat33d(*a)
528
- M = numpy.array(a.as_mat33())
553
+ M = a.as_mat33().array
529
554
  v, Q = numpy.linalg.eigh(M) # eig() may return complex due to numerical precision?
530
555
  v = numpy.maximum(v, 0.5) # avoid NPD with minimum B = 0.5
531
556
  M2 = Q.dot(numpy.diag(v)).dot(Q.T)
@@ -736,7 +761,7 @@ class Refine:
736
761
  weight /= 1.1
737
762
  if self.st_traj is not None:
738
763
  self.st_traj.add_model(self.st[0])
739
- self.st_traj[-1].name = str(len(self.st_traj))
764
+ self.st_traj[-1].num = len(self.st_traj)
740
765
  if stats_json_out:
741
766
  write_stats_json_safe(stats, stats_json_out)
742
767
 
@@ -781,43 +806,101 @@ class Refine:
781
806
  lstr = utils.make_loggraph_str(df, "stats vs cycle", forplot,
782
807
  float_format="{:.4f}".format)
783
808
  logger.writeln(lstr)
784
- self.update_meta(stats[-1])
785
809
  return stats
786
810
 
787
- def update_meta(self, stats):
788
- # TODO write stats. probably geom.reporting.get_summary_table should return with _refine_ls_restr.type names
789
- # should remove st.mod_residues?
790
- self.st.helices.clear()
791
- self.st.sheets.clear()
792
- raw_remarks = [f'REMARK 3',
793
- f'REMARK 3 REFINEMENT.',
794
- f'REMARK 3 PROGRAM : SERVALCAT {servalcat.__version__}',
795
- f'REMARK 3 AUTHORS : YAMASHITA,MURSHUDOV',
796
- f'REMARK 3',
797
- ]
798
- si = gemmi.SoftwareItem()
799
- si.classification = gemmi.SoftwareItem.Classification.Refinement
800
- si.name = "Servalcat"
801
- si.version = servalcat.__version__
802
- si.date = servalcat.__date__
803
- self.st.meta.software = [si]
804
-
805
- ri = gemmi.RefinementInfo()
806
- if "geom" in stats:
807
- restr_stats = []
808
- raw_remarks.append("REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES COUNT RMS WEIGHT")
809
- for k, n, l, pl in (("r.m.s.d.", "Bond distances, non H", "s_bond_nonh_d", "BOND LENGTHS REFINED ATOMS (A)"),
810
- ("r.m.s.d.", "Bond angles, non H", "s_angle_nonh_d", "BOND ANGLES REFINED ATOMS (DEGREES)")):
811
- if k in stats["geom"]["summary"] and n in stats["geom"]["summary"][k]:
812
- rr = gemmi.RefinementInfo.Restr(l)
813
- rr.dev_ideal = stats["geom"]["summary"][k].get(n)
814
- rr.count = stats["geom"]["summary"]["N restraints"].get(n)
815
- rr.weight = stats["geom"]["summary"]["Mn(sigma)"].get(n)
816
- restr_stats.append(rr)
817
- raw_remarks.append(f"REMARK 3 {pl}:{rr.count:6d} ;{rr.dev_ideal:6.3f} ;{rr.weight:6.3f}")
818
- ri.restr_stats = restr_stats
819
- raw_remarks.append("REMARK 3")
820
- self.st.meta.refinement = [ri]
821
- self.st.raw_remarks = raw_remarks
822
-
823
811
  # class Refine
812
+
813
+ def update_meta(st, stats, ll=None):
814
+ # TODO write stats. probably geom.reporting.get_summary_table should return with _refine_ls_restr.type names
815
+ # should remove st.mod_residues?
816
+ st.helices.clear()
817
+ st.sheets.clear()
818
+ raw_remarks = [f'REMARK 3',
819
+ f'REMARK 3 REFINEMENT.',
820
+ f'REMARK 3 PROGRAM : SERVALCAT {servalcat.__version__}',
821
+ f'REMARK 3 AUTHORS : YAMASHITA,MURSHUDOV',
822
+ f'REMARK 3',
823
+ ]
824
+ si = gemmi.SoftwareItem()
825
+ si.classification = gemmi.SoftwareItem.Classification.Refinement
826
+ si.name = "Servalcat"
827
+ si.version = servalcat.__version__
828
+ si.date = servalcat.__date__
829
+ st.meta.software = [si]
830
+
831
+ ri = gemmi.RefinementInfo()
832
+ if "geom" in stats:
833
+ restr_stats = []
834
+ raw_remarks.append("REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES COUNT RMS WEIGHT")
835
+ for k, n, l, pl in (("r.m.s.d.", "Bond distances, non H", "s_bond_nonh_d", "BOND LENGTHS REFINED ATOMS (A)"),
836
+ ("r.m.s.d.", "Bond angles, non H", "s_angle_nonh_deg", "BOND ANGLES REFINED ATOMS (DEGREES)"),
837
+ ("r.m.s.d.", "Torsion angles, period 1", "s_dihedral_angle_1_deg", "TORSION ANGLES, PERIOD 1 (DEGREES)"),
838
+ ("r.m.s.d.", "Torsion angles, period 2", "s_dihedral_angle_2_deg", "TORSION ANGLES, PERIOD 2 (DEGREES)"),
839
+ ("r.m.s.d.", "Torsion angles, period 3", "s_dihedral_angle_3_deg", "TORSION ANGLES, PERIOD 3 (DEGREES)"),
840
+ ("r.m.s.d.", "Torsion angles, period 6", "s_dihedral_angle_6_deg", "TORSION ANGLES, PERIOD 6 (DEGREES)"),
841
+ ("r.m.s.d.", "Chiral centres", "s_chiral_restr", "CHIRAL-CENTER RESTRAINTS (A**3)"),
842
+ ("r.m.s.d.", "Planar groups", "s_planes", "GENERAL PLANES REFINED ATOMS (A)"),
843
+ ("r.m.s.d.", "VDW nonbonded", "s_nbd", ""),
844
+ ("r.m.s.d.", "VDW torsion", "s_nbtor", ""),
845
+ ("r.m.s.d.", "VDW hbond", "s_hbond_nbd", ""),
846
+ ("r.m.s.d.", "VDW metal", "s_metal_ion", ""),
847
+ ("r.m.s.d.", "VDW dummy", "s_dummy_nbd", ""),
848
+ ("r.m.s.d.", "VDW nonbonded, symmetry", "s_symmetry_nbd", ""),
849
+ ("r.m.s.d.", "VDW torsion, symmetry", "s_symmetry_nbtor", ""),
850
+ ("r.m.s.d.", "VDW hbond, symmetry", "s_symmetry_hbond_nbd", ""),
851
+ ("r.m.s.d.", "VDW metal, symmetry", "s_symmetry_metal_ion", ""),
852
+ ("r.m.s.d.", "VDW dummy, symmetry", "s_symmetry_dummy_nbd", "")):
853
+ if k in stats["geom"]["summary"] and n in stats["geom"]["summary"][k]:
854
+ rr = gemmi.RefinementInfo.Restr(l)
855
+ rr.dev_ideal = round(stats["geom"]["summary"][k].get(n), 4)
856
+ rr.count = stats["geom"]["summary"]["N restraints"].get(n)
857
+ rr.weight = round(stats["geom"]["summary"]["Mn(sigma)"].get(n), 4)
858
+ restr_stats.append(rr)
859
+ if pl:
860
+ raw_remarks.append(f"REMARK 3 {pl}:{rr.count:6d} ;{rr.dev_ideal:6.3f} ;{rr.weight:6.3f}")
861
+ ri.restr_stats = restr_stats
862
+ raw_remarks.append("REMARK 3")
863
+ if ll is not None:
864
+ ri.id = ll.refine_id()
865
+ ri.mean_b = round(numpy.mean([cra.atom.b_iso for cra in st[0].all()]), 2)
866
+ if ll.b_aniso is not None:
867
+ ri.aniso_b = ll.b_aniso
868
+ for k, kd, nd in (("Rwork", "r_work", 4), ("Rfree", "r_free", 4), ("R", "r_all", 4),
869
+ ("FSCaverage", "fsc_work", 4),
870
+ ("FSCaverage_half1", "fsc_work", 4), ("FSCaverage_half2", "fsc_free", 4)):
871
+ if k in stats["data"]["summary"]:
872
+ setattr(ri, kd, round(stats["data"]["summary"][k], nd))
873
+ bins = []
874
+ n_all = 0
875
+ for b in stats["data"]["binned"]:
876
+ bri = gemmi.BasicRefinementInfo()
877
+ bri.resolution_high = round(b["d_min"], 3)
878
+ bri.resolution_low = round(b["d_max"], 3)
879
+ for k, kd, nd in (("Rwork", "r_work", 4), ("Rfree", "r_free", 4),
880
+ ("R1work", "r_work", 4), ("R1free", "r_free", 4),
881
+ ("R", "r_all", 4), ("R1", "r_all", 4),
882
+ ("CCI", "cc_intensity_work", 4), ("CCF", "cc_fo_fc_work", 4),
883
+ ("CCIwork", "cc_intensity_work", 4), ("CCIfree", "cc_intensity_free", 4),
884
+ ("CCFwork", "cc_fo_fc_work", 4), ("CCFfree", "cc_fo_fc_free", 4),
885
+ ("fsc_FC_full", "fsc_work", 4), ("fsc_model", "fsc_work", 4),
886
+ ("fsc_model_half1", "fsc_work", 4), ("fsc_model_half2", "fsc_free", 4),
887
+ ("n_work", "work_set_count", 0), ("n_free", "rfree_set_count", 0),
888
+ ("n_obs", "reflection_count", 0), ("ncoeffs", "reflection_count", 0)):
889
+ if k in b: setattr(bri, kd, round(b[k], nd))
890
+ if "n_all" in b and "n_obs" in b:
891
+ bri.completeness = round(b["n_obs"] / b["n_all"] * 100, 2)
892
+ n_all += b["n_all"]
893
+ bins.append(bri)
894
+ ri.rfree_set_count = max(-1, sum(b.rfree_set_count for b in bins))
895
+ ri.work_set_count = max(-1, sum(b.work_set_count for b in bins))
896
+ ri.reflection_count = max(-1, sum(b.reflection_count for b in bins))
897
+ ri.resolution_high = round(min(b.resolution_high for b in bins), 3)
898
+ ri.resolution_low = round(max(b.resolution_low for b in bins), 3)
899
+ if ri.reflection_count > 0 and n_all > 0:
900
+ ri.completeness = round(ri.reflection_count / n_all * 100, 2)
901
+ ri.bins = bins
902
+ if ri.rfree_set_count > 0:
903
+ ri.cross_validation_method = "THROUGHOUT"
904
+ st.meta.refinement = [ri]
905
+ st.raw_remarks = raw_remarks
906
+ # update_meta()
@@ -14,7 +14,7 @@ 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, convert_stats_to_dicts
17
+ from servalcat.refine.refine import Geom, Refine, convert_stats_to_dicts, update_meta, print_h_options
18
18
  from servalcat.refmac import refmac_keywords
19
19
 
20
20
  def add_arguments(parser):
@@ -93,9 +93,14 @@ def refine_and_update_dictionary(cif_in, monomer_dir, output_prefix, randomize=0
93
93
  if len(st) > 0: break
94
94
  else:
95
95
  raise SystemExit("No model in the cif file")
96
- monlib = utils.restraints.load_monomer_library(st, monomer_dir=monomer_dir, # monlib is needed for ener_lib
97
- cif_files=[cif_in],
98
- stop_for_unknowns=True)
96
+ for i in range(len(st)-1):
97
+ del st[1]
98
+ try:
99
+ monlib = utils.restraints.load_monomer_library(st, monomer_dir=monomer_dir, # monlib is needed for ener_lib
100
+ cif_files=[cif_in],
101
+ stop_for_unknowns=True)
102
+ except RuntimeError as e:
103
+ raise SystemExit("Error: {}".format(e))
99
104
  all_stats = []
100
105
  for i_macro in 0, 1:
101
106
  try:
@@ -121,16 +126,19 @@ def refine_and_update_dictionary(cif_in, monomer_dir, output_prefix, randomize=0
121
126
  for row in block.find("_chem_comp_atom.", ["atom_id", "?x", "?y", "?z",
122
127
  "?pdbx_model_Cartn_x_ideal",
123
128
  "?pdbx_model_Cartn_y_ideal",
124
- "?pdbx_model_Cartn_z_ideal"]):
129
+ "?pdbx_model_Cartn_z_ideal",
130
+ "?model_Cartn_x", "?model_Cartn_y", "?model_Cartn_z"]):
125
131
  p = pos[row.str(0)]
126
132
  for i in range(3):
127
133
  if row.has(i+1):
128
134
  row[i+1] = "{:.3f}".format(p[i])
129
135
  if row.has(i+4):
130
136
  row[i+4] = "{:.3f}".format(p[i])
137
+ if row.has(i+7):
138
+ row[i+7] = "{:.3f}".format(p[i])
131
139
  # add description
132
140
  add_program_info_to_dictionary(block, st[0][0][0].name)
133
- doc.write_file(output_prefix + "_updated.cif", style=gemmi.cif.Style.Aligned)
141
+ doc.write_file(output_prefix + "_updated.cif", options=gemmi.cif.Style.Aligned)
134
142
  logger.writeln("Updated dictionary saved: {}".format(output_prefix + "_updated.cif"))
135
143
  with open(output_prefix + "_stats.json", "w") as ofs:
136
144
  json.dump([convert_stats_to_dicts(x) for x in all_stats],
@@ -147,11 +155,13 @@ def refine_geom(model_in, monomer_dir, cif_files, h_change, ncycle, output_prefi
147
155
  logger.writeln("Take NCS constraints into account.")
148
156
  st2.expand_ncs(gemmi.HowToNameCopiedChain.Dup, merge_dist=0)
149
157
  utils.fileio.write_model(st2, file_name="input_expanded.pdb")
150
-
151
- monlib = utils.restraints.load_monomer_library(st, monomer_dir=monomer_dir,
152
- cif_files=cif_files,
153
- stop_for_unknowns=True,
154
- params=params)
158
+ try:
159
+ monlib = utils.restraints.load_monomer_library(st, monomer_dir=monomer_dir,
160
+ cif_files=cif_files,
161
+ stop_for_unknowns=True,
162
+ params=params)
163
+ except RuntimeError as e:
164
+ raise SystemExit("Error: {}".format(e))
155
165
  utils.restraints.find_and_fix_links(st, monlib, find_metal_links=find_links,
156
166
  add_found=find_links) # should remove unknown id here?
157
167
  try:
@@ -161,6 +171,8 @@ def refine_geom(model_in, monomer_dir, cif_files, h_change, ncycle, output_prefi
161
171
  except RuntimeError as e:
162
172
  raise SystemExit("Error: {}".format(e))
163
173
 
174
+ print_h_options(h_change, st[0].has_hydrogen(), refine_h=True, hout=True, geom_only=True)
175
+
164
176
  if use_ncsr:
165
177
  ncslist = utils.restraints.prepare_ncs_restraints(st)
166
178
  else:
@@ -169,6 +181,7 @@ def refine_geom(model_in, monomer_dir, cif_files, h_change, ncycle, output_prefi
169
181
  refiner = Refine(st, geom, params=params)
170
182
  stats = refiner.run_cycles(ncycle,
171
183
  stats_json_out=output_prefix + "_stats.json")
184
+ update_meta(st, stats[-1])
172
185
  refiner.st.name = output_prefix
173
186
  utils.fileio.write_model(refiner.st, output_prefix, pdb=True, cif=True)
174
187
  if params["write_trajectory"]: