servalcat 0.4.100__tar.gz → 0.4.105__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 (436) hide show
  1. {servalcat-0.4.100 → servalcat-0.4.105}/CMakeLists.txt +1 -1
  2. {servalcat-0.4.100 → servalcat-0.4.105}/PKG-INFO +5 -5
  3. {servalcat-0.4.100 → servalcat-0.4.105}/README.md +1 -1
  4. {servalcat-0.4.100 → servalcat-0.4.105}/pyproject.toml +2 -2
  5. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/__init__.py +2 -2
  6. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine.py +11 -1
  7. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine_spa.py +6 -8
  8. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine_xtal.py +20 -11
  9. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/refmac_wrapper.py +36 -2
  10. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/fofc.py +4 -4
  11. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/run_refmac.py +3 -3
  12. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/commands.py +4 -4
  13. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/fileio.py +78 -39
  14. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/model.py +2 -1
  15. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/symmetry.py +5 -2
  16. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/sigmaa.py +96 -36
  17. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/twin.py +3 -4
  18. {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/geom.hpp +8 -2
  19. {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_refine.py +1 -1
  20. {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_spa.py +4 -4
  21. {servalcat-0.4.100 → servalcat-0.4.105}/LICENSE +0 -0
  22. {servalcat-0.4.100 → servalcat-0.4.105}/commit.sh +0 -0
  23. {servalcat-0.4.100 → servalcat-0.4.105}/docs/Makefile +0 -0
  24. {servalcat-0.4.100 → servalcat-0.4.105}/docs/commands.rst +0 -0
  25. {servalcat-0.4.100 → servalcat-0.4.105}/docs/conf.py +0 -0
  26. {servalcat-0.4.100 → servalcat-0.4.105}/docs/help/fofc.txt +0 -0
  27. {servalcat-0.4.100 → servalcat-0.4.105}/docs/help/refine_spa.txt +0 -0
  28. {servalcat-0.4.100 → servalcat-0.4.105}/docs/help/trim.txt +0 -0
  29. {servalcat-0.4.100 → servalcat-0.4.105}/docs/index.rst +0 -0
  30. {servalcat-0.4.100 → servalcat-0.4.105}/docs/overview.rst +0 -0
  31. {servalcat-0.4.100 → servalcat-0.4.105}/docs/requirements.txt +0 -0
  32. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa.rst +0 -0
  33. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/ab42.rst +0 -0
  34. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine.rst +0 -0
  35. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/ccpem_input-fs8.png +0 -0
  36. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/coot_113-fs8.png +0 -0
  37. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/refined_fsc_1.png +0 -0
  38. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/refined_fsc_2.png +0 -0
  39. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/index.rst +0 -0
  40. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/omitmap.rst +0 -0
  41. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/p4_figs/coot_fofc_omit_4sigma.png +0 -0
  42. {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/p4_figs/pymol_fofc_omit_4sigma.png +0 -0
  43. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.APACHE +0 -0
  44. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.BSD +0 -0
  45. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.GPL +0 -0
  46. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.LGPL +0 -0
  47. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.MINPACK +0 -0
  48. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.MPL2 +0 -0
  49. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.README +0 -0
  50. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Cholesky +0 -0
  51. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/CholmodSupport +0 -0
  52. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Core +0 -0
  53. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Dense +0 -0
  54. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Eigen +0 -0
  55. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Eigenvalues +0 -0
  56. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Geometry +0 -0
  57. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Householder +0 -0
  58. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/IterativeLinearSolvers +0 -0
  59. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Jacobi +0 -0
  60. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/KLUSupport +0 -0
  61. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/LU +0 -0
  62. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/MetisSupport +0 -0
  63. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/OrderingMethods +0 -0
  64. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/PaStiXSupport +0 -0
  65. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/PardisoSupport +0 -0
  66. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/QR +0 -0
  67. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/QtAlignedMalloc +0 -0
  68. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SPQRSupport +0 -0
  69. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SVD +0 -0
  70. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Sparse +0 -0
  71. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseCholesky +0 -0
  72. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseCore +0 -0
  73. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseLU +0 -0
  74. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseQR +0 -0
  75. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/StdDeque +0 -0
  76. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/StdList +0 -0
  77. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/StdVector +0 -0
  78. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SuperLUSupport +0 -0
  79. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/UmfPackSupport +0 -0
  80. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Cholesky/LDLT.h +0 -0
  81. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Cholesky/LLT.h +0 -0
  82. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +0 -0
  83. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +0 -0
  84. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ArithmeticSequence.h +0 -0
  85. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Array.h +0 -0
  86. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ArrayBase.h +0 -0
  87. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ArrayWrapper.h +0 -0
  88. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Assign.h +0 -0
  89. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/AssignEvaluator.h +0 -0
  90. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Assign_MKL.h +0 -0
  91. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/BandMatrix.h +0 -0
  92. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Block.h +0 -0
  93. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/BooleanRedux.h +0 -0
  94. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CommaInitializer.h +0 -0
  95. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ConditionEstimator.h +0 -0
  96. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CoreEvaluators.h +0 -0
  97. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CoreIterators.h +0 -0
  98. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseBinaryOp.h +0 -0
  99. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseNullaryOp.h +0 -0
  100. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseTernaryOp.h +0 -0
  101. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseUnaryOp.h +0 -0
  102. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseUnaryView.h +0 -0
  103. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DenseBase.h +0 -0
  104. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DenseCoeffsBase.h +0 -0
  105. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DenseStorage.h +0 -0
  106. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Diagonal.h +0 -0
  107. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DiagonalMatrix.h +0 -0
  108. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DiagonalProduct.h +0 -0
  109. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Dot.h +0 -0
  110. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/EigenBase.h +0 -0
  111. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ForceAlignedAccess.h +0 -0
  112. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Fuzzy.h +0 -0
  113. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/GeneralProduct.h +0 -0
  114. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/GenericPacketMath.h +0 -0
  115. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/GlobalFunctions.h +0 -0
  116. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/IO.h +0 -0
  117. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/IndexedView.h +0 -0
  118. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Inverse.h +0 -0
  119. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Map.h +0 -0
  120. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MapBase.h +0 -0
  121. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MathFunctions.h +0 -0
  122. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MathFunctionsImpl.h +0 -0
  123. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Matrix.h +0 -0
  124. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MatrixBase.h +0 -0
  125. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/NestByValue.h +0 -0
  126. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/NoAlias.h +0 -0
  127. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/NumTraits.h +0 -0
  128. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/PartialReduxEvaluator.h +0 -0
  129. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/PermutationMatrix.h +0 -0
  130. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/PlainObjectBase.h +0 -0
  131. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Product.h +0 -0
  132. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ProductEvaluators.h +0 -0
  133. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Random.h +0 -0
  134. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Redux.h +0 -0
  135. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Ref.h +0 -0
  136. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Replicate.h +0 -0
  137. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Reshaped.h +0 -0
  138. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ReturnByValue.h +0 -0
  139. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Reverse.h +0 -0
  140. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Select.h +0 -0
  141. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SelfAdjointView.h +0 -0
  142. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +0 -0
  143. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Solve.h +0 -0
  144. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SolveTriangular.h +0 -0
  145. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SolverBase.h +0 -0
  146. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/StableNorm.h +0 -0
  147. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/StlIterators.h +0 -0
  148. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Stride.h +0 -0
  149. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Swap.h +0 -0
  150. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Transpose.h +0 -0
  151. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Transpositions.h +0 -0
  152. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/TriangularMatrix.h +0 -0
  153. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/VectorBlock.h +0 -0
  154. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/VectorwiseOp.h +0 -0
  155. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Visitor.h +0 -0
  156. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/Complex.h +0 -0
  157. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +0 -0
  158. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +0 -0
  159. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +0 -0
  160. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/Complex.h +0 -0
  161. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +0 -0
  162. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +0 -0
  163. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +0 -0
  164. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +0 -0
  165. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +0 -0
  166. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +0 -0
  167. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +0 -0
  168. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +0 -0
  169. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +0 -0
  170. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -0
  171. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/BFloat16.h +0 -0
  172. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +0 -0
  173. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +0 -0
  174. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +0 -0
  175. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/Half.h +0 -0
  176. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/Settings.h +0 -0
  177. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -0
  178. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +0 -0
  179. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +0 -0
  180. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +0 -0
  181. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +0 -0
  182. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/MSA/Complex.h +0 -0
  183. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +0 -0
  184. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +0 -0
  185. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/Complex.h +0 -0
  186. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +0 -0
  187. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +0 -0
  188. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +0 -0
  189. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +0 -0
  190. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/Complex.h +0 -0
  191. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +0 -0
  192. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +0 -0
  193. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +0 -0
  194. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +0 -0
  195. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +0 -0
  196. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +0 -0
  197. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +0 -0
  198. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +0 -0
  199. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +0 -0
  200. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -0
  201. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +0 -0
  202. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/ZVector/Complex.h +0 -0
  203. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +0 -0
  204. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +0 -0
  205. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +0 -0
  206. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/BinaryFunctors.h +0 -0
  207. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/NullaryFunctors.h +0 -0
  208. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/StlFunctors.h +0 -0
  209. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/TernaryFunctors.h +0 -0
  210. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/UnaryFunctors.h +0 -0
  211. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +0 -0
  212. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +0 -0
  213. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +0 -0
  214. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +0 -0
  215. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +0 -0
  216. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +0 -0
  217. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +0 -0
  218. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/Parallelizer.h +0 -0
  219. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +0 -0
  220. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +0 -0
  221. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +0 -0
  222. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +0 -0
  223. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointProduct.h +0 -0
  224. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +0 -0
  225. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +0 -0
  226. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +0 -0
  227. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +0 -0
  228. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +0 -0
  229. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +0 -0
  230. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +0 -0
  231. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularSolverVector.h +0 -0
  232. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/BlasUtil.h +0 -0
  233. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ConfigureVectorization.h +0 -0
  234. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Constants.h +0 -0
  235. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +0 -0
  236. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ForwardDeclarations.h +0 -0
  237. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/IndexedViewHelper.h +0 -0
  238. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/IntegralConstant.h +0 -0
  239. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/MKL_support.h +0 -0
  240. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Macros.h +0 -0
  241. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Memory.h +0 -0
  242. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Meta.h +0 -0
  243. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/NonMPL2.h +0 -0
  244. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +0 -0
  245. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ReshapedHelper.h +0 -0
  246. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/StaticAssert.h +0 -0
  247. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/SymbolicIndex.h +0 -0
  248. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/XprHelper.h +0 -0
  249. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +0 -0
  250. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +0 -0
  251. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +0 -0
  252. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/EigenSolver.h +0 -0
  253. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +0 -0
  254. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +0 -0
  255. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +0 -0
  256. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +0 -0
  257. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/RealQZ.h +0 -0
  258. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/RealSchur.h +0 -0
  259. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +0 -0
  260. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +0 -0
  261. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +0 -0
  262. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +0 -0
  263. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/AlignedBox.h +0 -0
  264. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/AngleAxis.h +0 -0
  265. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/EulerAngles.h +0 -0
  266. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Homogeneous.h +0 -0
  267. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Hyperplane.h +0 -0
  268. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -0
  269. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -0
  270. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Quaternion.h +0 -0
  271. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Rotation2D.h +0 -0
  272. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/RotationBase.h +0 -0
  273. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Scaling.h +0 -0
  274. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Transform.h +0 -0
  275. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Translation.h +0 -0
  276. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Umeyama.h +0 -0
  277. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -0
  278. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -0
  279. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Householder/Householder.h +0 -0
  280. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -0
  281. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +0 -0
  282. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +0 -0
  283. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +0 -0
  284. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +0 -0
  285. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +0 -0
  286. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +0 -0
  287. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +0 -0
  288. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +0 -0
  289. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Jacobi/Jacobi.h +0 -0
  290. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/KLUSupport/KLUSupport.h +0 -0
  291. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/Determinant.h +0 -0
  292. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/FullPivLU.h +0 -0
  293. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/InverseImpl.h +0 -0
  294. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/PartialPivLU.h +0 -0
  295. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +0 -0
  296. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -0
  297. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/MetisSupport/MetisSupport.h +0 -0
  298. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/OrderingMethods/Amd.h +0 -0
  299. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +0 -0
  300. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/OrderingMethods/Ordering.h +0 -0
  301. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +0 -0
  302. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +0 -0
  303. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -0
  304. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +0 -0
  305. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -0
  306. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -0
  307. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/HouseholderQR.h +0 -0
  308. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +0 -0
  309. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +0 -0
  310. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/BDCSVD.h +0 -0
  311. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/JacobiSVD.h +0 -0
  312. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +0 -0
  313. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/SVDBase.h +0 -0
  314. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -0
  315. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +0 -0
  316. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +0 -0
  317. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/AmbiVector.h +0 -0
  318. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/CompressedStorage.h +0 -0
  319. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +0 -0
  320. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -0
  321. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseAssign.h +0 -0
  322. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseBlock.h +0 -0
  323. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseColEtree.h +0 -0
  324. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +0 -0
  325. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +0 -0
  326. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +0 -0
  327. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +0 -0
  328. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +0 -0
  329. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseDot.h +0 -0
  330. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseFuzzy.h +0 -0
  331. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseMap.h +0 -0
  332. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseMatrix.h +0 -0
  333. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +0 -0
  334. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparsePermutation.h +0 -0
  335. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseProduct.h +0 -0
  336. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseRedux.h +0 -0
  337. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseRef.h +0 -0
  338. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +0 -0
  339. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseSolverBase.h +0 -0
  340. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +0 -0
  341. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseTranspose.h +0 -0
  342. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseTriangularView.h +0 -0
  343. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseUtil.h +0 -0
  344. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseVector.h +0 -0
  345. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseView.h +0 -0
  346. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/TriangularSolver.h +0 -0
  347. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU.h +0 -0
  348. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLUImpl.h +0 -0
  349. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +0 -0
  350. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +0 -0
  351. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +0 -0
  352. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +0 -0
  353. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +0 -0
  354. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +0 -0
  355. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +0 -0
  356. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -0
  357. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +0 -0
  358. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +0 -0
  359. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +0 -0
  360. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +0 -0
  361. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +0 -0
  362. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +0 -0
  363. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +0 -0
  364. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseQR/SparseQR.h +0 -0
  365. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/StdDeque.h +0 -0
  366. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/StdList.h +0 -0
  367. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/StdVector.h +0 -0
  368. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/details.h +0 -0
  369. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +0 -0
  370. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +0 -0
  371. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/Image.h +0 -0
  372. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/Kernel.h +0 -0
  373. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/RealSvd2x2.h +0 -0
  374. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/blas.h +0 -0
  375. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/lapack.h +0 -0
  376. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/lapacke.h +0 -0
  377. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/lapacke_mangling.h +0 -0
  378. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -0
  379. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -0
  380. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/BlockMethods.h +0 -0
  381. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -0
  382. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -0
  383. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -0
  384. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -0
  385. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -0
  386. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -0
  387. {servalcat-0.4.100 → servalcat-0.4.105}/eigen/README.md +0 -0
  388. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/__main__.py +0 -0
  389. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/__init__.py +0 -0
  390. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/cgsolve.py +0 -0
  391. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine_geom.py +0 -0
  392. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/spa.py +0 -0
  393. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/xtal.py +0 -0
  394. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/__init__.py +0 -0
  395. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/exte.py +0 -0
  396. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/refmac_keywords.py +0 -0
  397. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/__init__.py +0 -0
  398. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/fsc.py +0 -0
  399. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/localcc.py +0 -0
  400. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/realspcc_from_var.py +0 -0
  401. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/shift_maps.py +0 -0
  402. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/shiftback.py +0 -0
  403. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/translate.py +0 -0
  404. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/__init__.py +0 -0
  405. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/generate_operators.py +0 -0
  406. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/hkl.py +0 -0
  407. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/logger.py +0 -0
  408. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/maps.py +0 -0
  409. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/refmac.py +0 -0
  410. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/restraints.py +0 -0
  411. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/__init__.py +0 -0
  412. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/french_wilson.py +0 -0
  413. {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/run_refmac_small.py +0 -0
  414. {servalcat-0.4.100 → servalcat-0.4.105}/src/amplitude.cpp +0 -0
  415. {servalcat-0.4.100 → servalcat-0.4.105}/src/array.h +0 -0
  416. {servalcat-0.4.100 → servalcat-0.4.105}/src/ext.cpp +0 -0
  417. {servalcat-0.4.100 → servalcat-0.4.105}/src/intensity.cpp +0 -0
  418. {servalcat-0.4.100 → servalcat-0.4.105}/src/lambertw.hpp +0 -0
  419. {servalcat-0.4.100 → servalcat-0.4.105}/src/math.hpp +0 -0
  420. {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/cgsolve.hpp +0 -0
  421. {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/ll.hpp +0 -0
  422. {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/ncsr.hpp +0 -0
  423. {servalcat-0.4.100 → servalcat-0.4.105}/src/refine.cpp +0 -0
  424. {servalcat-0.4.100 → servalcat-0.4.105}/src/twin.cpp +0 -0
  425. {servalcat-0.4.100 → servalcat-0.4.105}/tests/5e5z/5e5z.mtz.gz +0 -0
  426. {servalcat-0.4.100 → servalcat-0.4.105}/tests/5e5z/5e5z.pdb.gz +0 -0
  427. {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.cif +0 -0
  428. {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.hkl +0 -0
  429. {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.ins +0 -0
  430. {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.mtz +0 -0
  431. {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.pdb +0 -0
  432. {servalcat-0.4.100 → servalcat-0.4.105}/tests/dict/acedrg_link_4D4-MS6.cif +0 -0
  433. {servalcat-0.4.100 → servalcat-0.4.105}/tests/dict/acedrg_link_MS6-GLY.cif +0 -0
  434. {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_for_ci.py +0 -0
  435. {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_misc.py +0 -0
  436. {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_xtal.py +0 -0
@@ -91,7 +91,7 @@ else()
91
91
  FetchContent_Declare(
92
92
  gemmi
93
93
  GIT_REPOSITORY https://github.com/project-gemmi/gemmi.git
94
- GIT_TAG v0.7.0
94
+ GIT_TAG v0.7.1
95
95
  )
96
96
  FetchContent_GetProperties(gemmi)
97
97
  if (NOT gemmi_POPULATED)
@@ -1,16 +1,16 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: servalcat
3
- Version: 0.4.100
3
+ Version: 0.4.105
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
- Project-URL: Repository, https://github.com/keitaroyam/servalcat
7
+ Project-URL: repository, https://github.com/keitaroyam/servalcat
8
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.7.0
13
+ Requires-Dist: gemmi==0.7.1
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.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.
43
+ The required GEMMI version is now [v0.7.1](https://github.com/project-gemmi/gemmi/releases/tag/v0.7.1). 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.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.
28
+ The required GEMMI version is now [v0.7.1](https://github.com/project-gemmi/gemmi/releases/tag/v0.7.1). 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,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["scikit-build-core~=0.10.7", "nanobind >=2.2"]
2
+ requires = ["scikit-build-core ~=0.11.1", "nanobind >=2.2"]
3
3
  build-backend = "scikit_build_core.build"
4
4
 
5
5
  # https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
@@ -7,7 +7,7 @@ build-backend = "scikit_build_core.build"
7
7
  name = "servalcat"
8
8
  dynamic = ["version"]
9
9
  requires-python = ">=3.8"
10
- dependencies = ['packaging', 'numpy>=1.15', 'scipy', 'pandas>=1.1.0', 'gemmi==0.7.0']
10
+ dependencies = ['packaging', 'numpy>=1.15', 'scipy', 'pandas>=1.1.0', 'gemmi==0.7.1']
11
11
  description="Structure refinement and validation for crystallography and single particle analysis"
12
12
  readme = "README.md"
13
13
  authors = [
@@ -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.100'
10
- __date__ = '2025-01-22'
9
+ __version__ = '0.4.105'
10
+ __date__ = '2025-03-26'
@@ -7,6 +7,7 @@ Mozilla Public License, version 2.0; see LICENSE.
7
7
  """
8
8
  from __future__ import absolute_import, division, print_function, generators
9
9
  import os
10
+ import time
10
11
  import re
11
12
  import gemmi
12
13
  import numpy
@@ -221,7 +222,16 @@ def write_stats_json_safe(stats, json_out):
221
222
  out_tmp = json_out + ".part"
222
223
  with open(out_tmp, "w") as ofs:
223
224
  json.dump(tmp, ofs, indent=2)
224
- os.replace(out_tmp, json_out)
225
+ for i in range(10):
226
+ try:
227
+ # On Windows, this fails when another process open the file
228
+ os.replace(out_tmp, json_out)
229
+ break
230
+ except PermissionError:
231
+ logger.writeln(f"{json_out} locked. retrying..")
232
+ time.sleep(0.5)
233
+ else:
234
+ raise RuntimeError(f"Cannot write {json_out}")
225
235
  logger.writeln(f"Refinement statistics saved: {json_out}")
226
236
  # write_stats_json_safe()
227
237
 
@@ -150,8 +150,8 @@ def main(args):
150
150
  topo = None
151
151
  if args.hydrogen == "all":
152
152
  logger.writeln("\nWARNING: in unrestrained refinement hydrogen atoms are not generated.\n")
153
- args.hydrogen = "yes"
154
- elif args.hydrogen == "no":
153
+ if args.hydrogen != "yes":
154
+ args.hydrogen = "no"
155
155
  st.remove_hydrogens()
156
156
  for i, cra in enumerate(st[0].all()):
157
157
  cra.atom.serial = i + 1
@@ -300,8 +300,7 @@ def main(args):
300
300
  if args.hklin:
301
301
  return
302
302
  # Calc Fo-Fc (and updated) maps
303
- diffmap_prefix = "{}_diffmap".format(args.output_prefix)
304
- calc_fofc(refiner.st, st_expanded, maps, monlib, ".mmcif", args, diffmap_prefix=diffmap_prefix)
303
+ calc_fofc(refiner.st, st_expanded, maps, monlib, ".mmcif", args, diffmap_prefix=args.output_prefix)
305
304
 
306
305
  # Final summary
307
306
  adpstats_txt = ""
@@ -320,8 +319,8 @@ def main(args):
320
319
  if args.mask_for_fofc:
321
320
  map_peaks_str = """\
322
321
  List Fo-Fc map peaks in the ASU:
323
- servalcat util map_peaks --map {diffmap_prefix}_normalized_fofc.mrc --model {prefix}.pdb --abs_level 4.0 \
324
- """.format(prefix=args.output_prefix, diffmap_prefix=diffmap_prefix)
322
+ servalcat util map_peaks --map {prefix}_normalized_fofc.mrc --model {prefix}.pdb --abs_level 4.0 \
323
+ """.format(prefix=args.output_prefix)
325
324
  else:
326
325
  map_peaks_str = "WARNING: --mask_for_fofc was not given, so the Fo-Fc map was not normalized."
327
326
 
@@ -343,7 +342,7 @@ Weight used: {final_weight:.3e}
343
342
  If you want to change the weight, give larger (looser restraints)
344
343
  or smaller (tighter) value to --weight=.
345
344
 
346
- Open refined model and {diffmap_prefix}.mtz with COOT:
345
+ Open refined model and {prefix}_maps.mtz with COOT:
347
346
  coot --script {prefix}_coot.py
348
347
 
349
348
  Open refined model, map and difference map with ChimeraX/ISOLDE:
@@ -358,7 +357,6 @@ chimerax {prefix}_chimerax.cxc
358
357
  adpstats=adpstats_txt.rstrip(),
359
358
  final_weight=args.weight,
360
359
  prefix=args.output_prefix,
361
- diffmap_prefix=diffmap_prefix,
362
360
  map_peaks_msg=map_peaks_str))
363
361
 
364
362
  # main()
@@ -24,11 +24,15 @@ b_to_u = utils.model.b_to_u
24
24
  def add_arguments(parser):
25
25
  parser.description = "program to refine crystallographic structures"
26
26
  parser.add_argument("--hklin", required=True)
27
+ parser.add_argument('--hklin_free',
28
+ help='Input MTZ file for test flags')
27
29
  parser.add_argument("-d", '--d_min', type=float)
28
30
  parser.add_argument('--d_max', type=float)
29
31
  parser.add_argument('--nbins', type=int,
30
32
  help="Number of bins (default: auto)")
31
33
  parser.add_argument("--labin", help="F,SIGF,FREE input")
34
+ parser.add_argument('--labin_free',
35
+ help='MTZ column of --hklin_free')
32
36
  parser.add_argument('--free', type=int,
33
37
  help='flag number for test set')
34
38
  parser.add_argument('--model', required=True,
@@ -128,7 +132,7 @@ def main(args):
128
132
  elif utils.fileio.is_mmhkl_file(hklin):
129
133
  hklin = utils.fileio.read_mmhkl(hklin)
130
134
  labin = decide_mtz_labels(hklin)
131
-
135
+ software_items = utils.fileio.software_items_from_mtz(hklin)
132
136
  try:
133
137
  hkldata, sts, fc_labs, centric_and_selections, args.free = process_input(hklin=hklin,
134
138
  labin=labin,
@@ -141,7 +145,10 @@ def main(args):
141
145
  use="work" if args.use_work_in_est else "test",
142
146
  max_bins=30,
143
147
  keep_charges=args.keep_charges,
144
- allow_unusual_occupancies=args.allow_unusual_occupancies)
148
+ allow_unusual_occupancies=args.allow_unusual_occupancies,
149
+ hklin_free=args.hklin_free,
150
+ labin_free=args.labin_free)
151
+
145
152
  except RuntimeError as e:
146
153
  raise SystemExit("Error: {}".format(e))
147
154
 
@@ -161,12 +168,13 @@ def main(args):
161
168
  if args.unrestrained:
162
169
  monlib = gemmi.MonLib()
163
170
  topo = None
164
- h_change = gemmi.HydrogenChange.NoChange
165
- if args.hydrogen == "all":
166
- logger.writeln("\nWARNING: in unrestrained refinement hydrogen atoms are not generated.\n")
167
- elif args.hydrogen == "no":
168
- st.remove_hydrogens()
171
+ if args.hydrogen == "yes":
172
+ h_change = gemmi.HydrogenChange.NoChange
173
+ else:
169
174
  h_change = gemmi.HydrogenChange.Remove
175
+ st.remove_hydrogens()
176
+ if args.hydrogen == "all":
177
+ logger.writeln("\nWARNING: in unrestrained refinement hydrogen atoms are not generated.\n")
170
178
  for i, cra in enumerate(st[0].all()):
171
179
  cra.atom.serial = i + 1
172
180
  else:
@@ -235,6 +243,7 @@ def main(args):
235
243
  weight_adjust_bond_rmsz_range=args.target_bond_rmsz_range,
236
244
  stats_json_out=args.output_prefix + "_stats.json")
237
245
  update_meta(st, stats[-1], ll)
246
+ st.meta.software = software_items + st.meta.software
238
247
  refiner.st.name = args.output_prefix
239
248
  utils.fileio.write_model(refiner.st, args.output_prefix, pdb=True, cif=True, hout=args.hout)
240
249
  if params["write_trajectory"]:
@@ -253,12 +262,12 @@ def main(args):
253
262
 
254
263
  # Write mtz file
255
264
  if ll.twin_data:
256
- labs = ["F_est", "F_exp", "FOM"]
265
+ labs = ["F_est", "F_exp"]
257
266
  elif is_int:
258
- labs = ["I", "SIGI", "FOM"]
267
+ labs = ["I", "SIGI", "F_est"]
259
268
  else:
260
- labs = ["FP", "SIGFP", "FOM"]
261
- labs.extend(["FWT", "DELFWT", "FC"])
269
+ labs = ["FP", "SIGFP"]
270
+ labs.extend(["FOM", "FWT", "DELFWT", "FC"])
262
271
  if "FAN" in hkldata.df:
263
272
  labs.append("FAN")
264
273
  if not args.no_solvent:
@@ -33,6 +33,8 @@ def add_arguments(parser):
33
33
  parser.add_argument('--keep_original_output', action='store_true', help="with .org extension")
34
34
  parser.add_argument("--keep_entities", action='store_true',
35
35
  help="Do not override entities")
36
+ parser.add_argument("--tls_addu", action='store_true',
37
+ help="Write prefix_addu.mmcif where TLS contribution is added to aniso U. Don't use this with 'tlso addu' keyword.")
36
38
  parser.add_argument('--prefix', help="output prefix")
37
39
  parser.add_argument("-v", "--version", action="version",
38
40
  version=logger.versions_str())
@@ -222,7 +224,7 @@ def get_output_model_names(xyzout):
222
224
  return pdb, mmcif
223
225
  # get_output_model_names()
224
226
 
225
- def modify_output(pdbout, cifout, fixes, hout, cispeps, keep_original_output=False):
227
+ def modify_output(pdbout, cifout, fixes, hout, cispeps, software_items, keep_original_output=False, tls_addu=False):
226
228
  st = utils.fileio.read_structure(cifout)
227
229
  st.cispeps = cispeps
228
230
  if os.path.exists(pdbout):
@@ -256,11 +258,37 @@ def modify_output(pdbout, cifout, fixes, hout, cispeps, keep_original_output=Fal
256
258
  # add servalcat version
257
259
  if len(st.meta.software) > 0 and st.meta.software[-1].name == "refmac":
258
260
  st.meta.software[-1].version += f" (refmacat {servalcat.__version__})"
261
+ st.meta.software = software_items + st.meta.software
259
262
 
260
263
  suffix = ".org"
261
264
  os.rename(cifout, cifout + suffix)
262
265
  utils.fileio.write_mmcif(st, cifout, cifout + suffix)
263
266
 
267
+ if tls_addu:
268
+ doc_ref = gemmi.cif.read(cifout + suffix)
269
+ tls_groups = {int(x.id): x for x in st.meta.refinement[0].tls_groups}
270
+ tls_details = doc_ref[0].find_value("_ccp4_refine_tls.details")
271
+ if tls_groups and gemmi.cif.as_string(tls_details) == "U values: residual only":
272
+ st2 = st.clone()
273
+ for cra in st2[0].all():
274
+ tlsgr = tls_groups.get(cra.atom.tls_group_id)
275
+ if cra.atom.tls_group_id > 0 and tlsgr is not None:
276
+ if not cra.atom.aniso.nonzero():
277
+ u = cra.atom.b_iso * utils.model.b_to_u
278
+ cra.atom.aniso = gemmi.SMat33f(u, u, u, 0, 0, 0)
279
+ u_from_tls = gemmi.calculate_u_from_tls(tlsgr, cra.atom.pos)
280
+ cra.atom.aniso += gemmi.SMat33f(*u_from_tls.elements_pdb())
281
+ cra.atom.b_iso = cra.atom.aniso.trace() / 3. * utils.model.u_to_b
282
+ cifout2 = cifout[:cifout.rindex(".")] + "_addu" + cifout[cifout.rindex("."):]
283
+ doc_ref[0].set_pair("_ccp4_refine_tls.details", gemmi.cif.quote("U values: with tls added"))
284
+ utils.fileio.write_mmcif(st2, cifout2, cif_ref_doc=doc_ref)
285
+ else:
286
+ if not tls_groups:
287
+ msg = "TLS group definition not found in the model"
288
+ else:
289
+ msg = "TLS already applied to the U values"
290
+ logger.writeln(f"Error: --tls_addu requested, but {msg}.")
291
+
264
292
  if st.has_d_fraction:
265
293
  st.store_deuterium_as_fraction(False) # also useful for pdb
266
294
  logger.writeln("will write a H/D expanded mmcif file")
@@ -313,6 +341,11 @@ def main(args):
313
341
  # TODO what if restin is given or make cr prepared is given?
314
342
  # TODO check make pept/link/suga/ss/conn/symm/chain
315
343
 
344
+ if "hklin" in opts: # for history
345
+ software_items = utils.fileio.software_items_from_mtz(opts["hklin"])
346
+ else:
347
+ software_items = []
348
+
316
349
  # Process model
317
350
  crdout = None
318
351
  refmac_fixes = None
@@ -380,7 +413,8 @@ def main(args):
380
413
  if xyzin is not None:
381
414
  pdbout, cifout = get_output_model_names(opts.get("xyzout"))
382
415
  if os.path.exists(cifout):
383
- modify_output(pdbout, cifout, refmac_fixes, keywords["make"].get("hout"), cispeps, args.keep_original_output)
416
+ modify_output(pdbout, cifout, refmac_fixes, keywords["make"].get("hout"), cispeps,
417
+ software_items, args.keep_original_output, args.tls_addu)
384
418
  # main()
385
419
 
386
420
  def command_line():
@@ -357,7 +357,7 @@ def write_files(hkldata, map_labs, grid_start, stats_str,
357
357
  hkldata2.translate(lab, -shifts)
358
358
  hkldata = hkldata2
359
359
 
360
- dump_to_mtz(hkldata, map_labs, "{}.mtz".format(output_prefix))
360
+ dump_to_mtz(hkldata, map_labs, "{}_maps.mtz".format(output_prefix))
361
361
  if stats_str: open("{}_Fstats.log".format(output_prefix), "w").write(stats_str)
362
362
  # write_files()
363
363
 
@@ -458,15 +458,15 @@ def main(args):
458
458
 
459
459
  py_out = "{}_coot.py".format(args.output_prefix)
460
460
  write_coot_script(py_out, model_file=args.model,
461
- mtz_file=args.output_prefix+".mtz",
461
+ mtz_file=args.output_prefix+"_maps.mtz",
462
462
  contour_fo=None if mask is None else 1.2,
463
463
  contour_fofc=None if mask is None else 3.0,
464
464
  ncs_ops=ncs_org)
465
- logger.writeln("\nOpen model and diffmap.mtz with COOT:")
465
+ logger.writeln("\nOpen model and diffmap mtz with COOT:")
466
466
  logger.writeln("coot --script " + py_out)
467
467
  if mask is not None:
468
468
  logger.writeln("\nWant to list Fo-Fc map peaks? Try:")
469
- if omit_h_electron:
469
+ if args.omit_h_electron:
470
470
  logger.writeln("servalcat util map_peaks --map {}_normalized_fofc_flipsign.mrc --model {} --abs_level 4.0".format(args.output_prefix, args.model))
471
471
  else:
472
472
  logger.writeln("servalcat util map_peaks --map {}_normalized_fofc.mrc --model {} --abs_level 4.0".format(args.output_prefix, args.model))
@@ -125,7 +125,7 @@ def add_arguments(parser):
125
125
  group = parser.add_mutually_exclusive_group()
126
126
  group.add_argument('--mask_for_fofc', help="Mask file for Fo-Fc map calculation")
127
127
  group.add_argument('--mask_radius_for_fofc', type=float, help="Mask radius for Fo-Fc map calculation")
128
- parser.add_argument('--trim_fofc_mtz', action="store_true", help="diffmap.mtz will have smaller cell (if --mask_for_fofc is given)")
128
+ parser.add_argument('--trim_fofc_mtz', action="store_true", help="maps mtz will have smaller cell (if --mask_for_fofc is given)")
129
129
  parser.add_argument("--fsc_resolution", type=float,
130
130
  help="High resolution limit for FSC calculation. Default: Nyquist")
131
131
 
@@ -312,7 +312,7 @@ def calc_fofc(st, st_expanded, maps, monlib, model_format, args, diffmap_prefix=
312
312
  # Create Coot script
313
313
  spa.fofc.write_coot_script("{}_coot.py".format(args.output_prefix),
314
314
  model_file="{}.pdb".format(args.output_prefix), # as Coot is not good at mmcif file..
315
- mtz_file="{}.mtz".format(diffmap_prefix),
315
+ mtz_file="{}_maps.mtz".format(diffmap_prefix),
316
316
  contour_fo=None if mask is None else 1.2,
317
317
  contour_fofc=None if mask is None else 3.0,
318
318
  ncs_ops=st.ncs)
@@ -364,7 +364,7 @@ Weight used: {final_weight}
364
364
  If you want to change the weight, give larger (looser restraints)
365
365
  or smaller (tighter) value to --weight_auto_scale=.
366
366
 
367
- Open refined model and diffmap.mtz with COOT:
367
+ Open refined model and maps mtz with COOT:
368
368
  coot --script {prefix}_coot.py
369
369
 
370
370
  Open refined model, map and difference map with ChimeraX/ISOLDE:
@@ -330,7 +330,7 @@ def symmodel(args):
330
330
  map_and_start = None
331
331
  if args.map:
332
332
  logger.writeln("Reading cell from map")
333
- map_and_start = fileio.read_ccp4_map(args.map)
333
+ map_and_start = fileio.read_ccp4_map(args.map, header_only=True)
334
334
  st.cell = map_and_start[0].unit_cell
335
335
  elif args.cell:
336
336
  st.cell = gemmi.UnitCell(*args.cell)
@@ -388,7 +388,7 @@ def helical_biomt(args):
388
388
  map_and_start = None
389
389
  if args.map:
390
390
  logger.writeln("Reading cell from map")
391
- map_and_start = fileio.read_ccp4_map(args.map)
391
+ map_and_start = fileio.read_ccp4_map(args.map, header_only=True)
392
392
  st.cell = map_and_start[0].unit_cell
393
393
  elif args.cell:
394
394
  st.cell = gemmi.UnitCell(*args.cell)
@@ -1307,7 +1307,7 @@ def mask_from_model(args):
1307
1307
  st = fileio.read_structure(args.model) # TODO option to (or not to) expand NCS
1308
1308
  if args.selection:
1309
1309
  gemmi.Selection(args.selection).remove_not_selected(st)
1310
- gr, grid_start, _ = fileio.read_ccp4_map(args.map)
1310
+ gr, grid_start, _ = fileio.read_ccp4_map(args.map, header_only=True)
1311
1311
  mask = maps.mask_from_model(st, args.radius, soft_edge=args.soft_edge, grid=gr)
1312
1312
  maps.write_ccp4_map(args.output, mask, grid_start=grid_start)
1313
1313
  # mask_from_model()
@@ -1367,7 +1367,7 @@ def map2mtz(args):
1367
1367
 
1368
1368
  def sm2mm(args):
1369
1369
  if args.output_prefix is None:
1370
- args.output_prefix = fileio.splitext(args.files[0])[0]
1370
+ args.output_prefix = os.path.basename(fileio.splitext(args.files[0])[0])
1371
1371
  st, mtz = fileio.read_small_molecule_files(args.files)
1372
1372
  if st is not None:
1373
1373
  fileio.write_model(st, prefix=args.output_prefix, pdb=True, cif=True)
@@ -18,6 +18,7 @@ import subprocess
18
18
  import gemmi
19
19
  import numpy
20
20
  import gzip
21
+ import traceback
21
22
 
22
23
  def splitext(path):
23
24
  if path.endswith((".bz2",".gz")):
@@ -66,14 +67,15 @@ def check_model_format(xyzin):
66
67
  return ".pdb"
67
68
  # check_model_format()
68
69
 
69
- def write_mmcif(st, cif_out, cif_ref=None):
70
+ def write_mmcif(st, cif_out, cif_ref=None, cif_ref_doc=None):
70
71
  """
71
72
  Refmac fails if _entry.id is longer than 80 chars including quotations
72
73
  """
73
74
  st_new = st.clone()
74
75
  logger.writeln("Writing mmCIF file: {}".format(cif_out))
75
- if cif_ref:
76
- logger.writeln(" using mmCIF metadata from: {}".format(cif_ref))
76
+ if cif_ref or cif_ref_doc:
77
+ if cif_ref:
78
+ logger.writeln(" using mmCIF metadata from: {}".format(cif_ref))
77
79
  groups = gemmi.MmcifOutputGroups(False)
78
80
  groups.group_pdb = True
79
81
  groups.ncs = True
@@ -88,18 +90,19 @@ def write_mmcif(st, cif_out, cif_ref=None):
88
90
  groups.conn = True
89
91
  groups.software = True
90
92
  groups.auth_all = True
91
- # FIXME is this all?
92
- try:
93
- doc = read_cif_safe(cif_ref)
94
- except Exception as e:
95
- # Sometimes refmac writes a broken mmcif file..
96
- logger.error("Error in mmCIF reading: {}".format(e))
97
- logger.error(" Give up using cif reference.")
98
- return write_mmcif(st, cif_out)
93
+ # FIXME is this all?
94
+ if cif_ref:
95
+ try:
96
+ cif_ref_doc = read_cif_safe(cif_ref)
97
+ except Exception as e:
98
+ # Sometimes refmac writes a broken mmcif file..
99
+ logger.error("Error in mmCIF reading: {}".format(e))
100
+ logger.error(" Give up using cif reference.")
101
+ return write_mmcif(st, cif_out)
99
102
 
100
- blocks = list(filter(lambda b: b.find_loop("_atom_site.id"), doc))
103
+ blocks = list(filter(lambda b: b.find_loop("_atom_site.id"), cif_ref_doc))
101
104
  if len(blocks) == 0:
102
- logger.writeln("No _atom_site found in {}".format(cif_ref))
105
+ logger.writeln("No _atom_site found in reference")
103
106
  logger.writeln(" Give up using cif reference.")
104
107
  return write_mmcif(st, cif_out)
105
108
  block = blocks[0]
@@ -108,7 +111,7 @@ def write_mmcif(st, cif_out, cif_ref=None):
108
111
  block.find_mmcif_category("_atom_sites.").erase()
109
112
  st_new.update_mmcif_block(block, groups)
110
113
  if "_entry.id" in st_new.info: st_new.info["_entry.id"] = st_new.info["_entry.id"][:78]
111
- doc.write_file(cif_out, options=gemmi.cif.Style.Aligned)
114
+ cif_ref_doc.write_file(cif_out, options=gemmi.cif.Style.Aligned)
112
115
  else:
113
116
  st_new.name = st_new.name[:78] # this will become _entry.id
114
117
  if "_entry.id" in st_new.info: st_new.info["_entry.id"] = st_new.info["_entry.id"][:78]
@@ -162,17 +165,20 @@ def read_shifts_txt(shifts_txt):
162
165
  return ret
163
166
  # read_shifts_txt()
164
167
 
165
- def read_ccp4_map(filename, setup=True, default_value=0., pixel_size=None, ignore_origin=True):
166
- m = gemmi.read_ccp4_map(filename)
167
- g = m.grid
168
+ def read_ccp4_map(filename, header_only=False, setup=True, default_value=0., pixel_size=None, ignore_origin=True):
169
+ if header_only:
170
+ m = gemmi.read_ccp4_header(filename)
171
+ else:
172
+ m = gemmi.read_ccp4_map(filename)
168
173
  grid_cell = [m.header_i32(x) for x in (8,9,10)]
169
174
  grid_start = [m.header_i32(x) for x in (5,6,7)]
170
175
  grid_shape = [m.header_i32(x) for x in (1,2,3)]
171
176
  axis_pos = m.axis_positions()
172
177
  axis_letters = ["","",""]
173
178
  for i, l in zip(axis_pos, "XYZ"): axis_letters[i] = l
174
- spacings = [1./g.unit_cell.reciprocal().parameters[i]/grid_cell[i] for i in (0,1,2)]
175
- voxel_size = [g.unit_cell.parameters[i]/grid_cell[i] for i in (0,1,2)]
179
+ cell = gemmi.UnitCell(*(m.header_float(x) for x in range(11,17)))
180
+ spacings = [1./cell.reciprocal().parameters[i]/grid_cell[i] for i in (0,1,2)]
181
+ voxel_size = [cell.parameters[i]/grid_cell[i] for i in (0,1,2)]
176
182
  origin = [m.header_float(x) for x in (50,51,52)]
177
183
  label = m.header_str(57, 80)
178
184
  label = label[:label.find("\0")]
@@ -181,7 +187,7 @@ def read_ccp4_map(filename, setup=True, default_value=0., pixel_size=None, ignor
181
187
  logger.writeln(" Map mode: {}".format(m.header_i32(4)))
182
188
  logger.writeln(" Start: {:4d} {:4d} {:4d}".format(*grid_start))
183
189
  logger.writeln(" Shape: {:4d} {:4d} {:4d}".format(*grid_shape))
184
- logger.writeln(" Cell: {} {} {} {} {} {}".format(*g.unit_cell.parameters))
190
+ logger.writeln(" Cell: {} {} {} {} {} {}".format(*cell.parameters))
185
191
  logger.writeln(" Axis order: {}".format(" ".join(axis_letters)))
186
192
  logger.writeln(" Space group: {}".format(m.header_i32(23)))
187
193
  logger.writeln(" Spacing: {:.6f} {:.6f} {:.6f}".format(*spacings))
@@ -195,9 +201,17 @@ def read_ccp4_map(filename, setup=True, default_value=0., pixel_size=None, ignor
195
201
  logger.writeln(" Label: {}".format(label))
196
202
  logger.writeln("")
197
203
 
204
+ if header_only:
205
+ grid = gemmi.FloatGrid(*grid_cell if setup else grid_shape) # waste of memory, but unavoidable for now
206
+ grid.set_unit_cell(cell)
207
+ grid.spacegroup = gemmi.find_spacegroup_by_number(m.header_i32(23))
208
+ else:
209
+ grid = m.grid
210
+
198
211
  if setup:
199
- if default_value is None: default_value = float("nan")
200
- m.setup(default_value)
212
+ if not header_only:
213
+ if default_value is None: default_value = float("nan")
214
+ m.setup(default_value)
201
215
  grid_start = [grid_start[i] for i in axis_pos]
202
216
 
203
217
  if pixel_size is not None:
@@ -207,13 +221,13 @@ def read_ccp4_map(filename, setup=True, default_value=0., pixel_size=None, ignor
207
221
  pixel_size = [pixel_size, pixel_size, pixel_size]
208
222
 
209
223
  logger.writeln("Overriding pixel size with {:.6f} {:.6f} {:.6f}".format(*pixel_size))
210
- orgc = m.grid.unit_cell.parameters
224
+ orgc = grid.unit_cell.parameters
211
225
  new_abc = [orgc[i]*pixel_size[i]/voxel_size[i] for i in (0,1,2)]
212
- m.grid.unit_cell = gemmi.UnitCell(new_abc[0], new_abc[1], new_abc[2],
213
- orgc[3], orgc[4], orgc[5])
214
- logger.writeln(" New cell= {:.1f} {:.1f} {:.1f} {:.1f} {:.1f} {:.1f}".format(*m.grid.unit_cell.parameters))
226
+ new_cell = gemmi.UnitCell(new_abc[0], new_abc[1], new_abc[2], orgc[3], orgc[4], orgc[5])
227
+ grid.set_unit_cell(new_cell)
228
+ logger.writeln(" New cell= {:.1f} {:.1f} {:.1f} {:.1f} {:.1f} {:.1f}".format(*grid.unit_cell.parameters))
215
229
 
216
- return [m.grid, grid_start, grid_shape]
230
+ return [grid, grid_start, grid_shape]
217
231
  # read_ccp4_map()
218
232
 
219
233
  def read_halfmaps(files, pixel_size=None, fail=True):
@@ -267,6 +281,19 @@ def is_mmhkl_file(hklin):
267
281
  # otherwise cannot decide
268
282
  # is_smhkl()
269
283
 
284
+ def software_items_from_mtz(hklin):
285
+ try:
286
+ if type(hklin) is gemmi.Mtz:
287
+ mtz = hklin
288
+ else:
289
+ mtz = gemmi.read_mtz_file(hklin, with_data=False)
290
+ return gemmi.get_software_from_mtz_history(mtz.history)
291
+ except:
292
+ logger.writeln(f"Failed to read software info from {hklin}")
293
+ logger.writeln(traceback.format_exc())
294
+ return []
295
+ # software_items_from_mtz()
296
+
270
297
  def read_map_from_mtz(mtz_in, cols, grid_size=None, sample_rate=3):
271
298
  mtz = read_mmhkl(mtz_in)
272
299
  d_min = mtz.resolution_high() # TODO get resolution for column?
@@ -551,9 +578,16 @@ def read_shelx_ins(ins_in=None, lines_in=None, ignore_q_peaks=True): # TODO supp
551
578
  if len(sp) > 11:
552
579
  u = list(map(float, sp[6:12]))
553
580
  site.aniso = gemmi.SMat33d(u[0], u[1], u[2], u[5], u[4], u[3])
554
- #TODO site.u_iso needs to be set?
581
+ site.u_iso = sum(u[:3]) / 3.
555
582
  else:
556
583
  site.u_iso = float(sp[6])
584
+ if site.u_iso < 0:
585
+ # most recently defined non-hydrogen atom
586
+ u_p = next((s.u_iso for s in reversed(ss.sites) if not s.element.is_hydrogen), None)
587
+ if u_p is not None:
588
+ site.u_iso *= -u_p
589
+ else:
590
+ logger.writeln(f"WARNING: parent atom not found for {site.label}")
557
591
 
558
592
  ss.add_site(site)
559
593
 
@@ -693,20 +727,21 @@ def read_small_molecule_files(files):
693
727
  # first pass - find structure
694
728
  for filename in files:
695
729
  ext = splitext(filename)[1]
696
- if ext in (".cif", ".res", ".ins"):
730
+ if ext in (".cif", ".res", ".ins", ".pdb", ".ent", ".mmcif"):
697
731
  try:
698
732
  st = read_structure(filename)
699
733
  except:
700
734
  continue
701
735
  logger.writeln("Coordinates read from: {}".format(filename))
702
- if ext == ".cif":
703
- b = gemmi.cif.read(filename).sole_block()
704
- res_str = b.find_value("_shelx_res_file")
705
- else:
706
- res_str = open(filename).read()
707
- if res_str:
708
- _, info = read_shelx_ins(lines_in=res_str.splitlines())
709
- hklf = info["hklf"]
736
+ if ext in (".cif", ".res", ".ins"):
737
+ if ext == ".cif":
738
+ b = gemmi.cif.read(filename).sole_block()
739
+ res_str = b.find_value("_shelx_res_file")
740
+ else:
741
+ res_str = open(filename).read()
742
+ if res_str:
743
+ _, info = read_shelx_ins(lines_in=res_str.splitlines())
744
+ hklf = info["hklf"]
710
745
  if st is None:
711
746
  logger.writeln("ERROR: coordinates not found.")
712
747
  return None, None
@@ -733,12 +768,16 @@ def read_sequence_file(f):
733
768
  # TODO needs improvement
734
769
  # return a list of [name, sequence]
735
770
  ret = []
736
- for l in open(f):
771
+ for i, l in enumerate(open(f)):
737
772
  l = l.strip()
738
773
  if l.startswith(">"):
739
774
  name = l[1:].strip()
740
775
  ret.append([name, ""])
741
776
  elif l:
742
777
  if not ret: ret.append(["", ""])
743
- ret[-1][1] += l.replace("*", "").replace("-", "").upper()
778
+ tmp = l.replace("*", "").replace("-", "").upper()
779
+ r = re.search("[^A-Z]", tmp)
780
+ if r:
781
+ raise RuntimeError(f"Invalid character in the sequence file: {f}:{i+1}")
782
+ ret[-1][1] += tmp
744
783
  return ret
@@ -494,9 +494,10 @@ def filter_contacting_ncs(st, cutoff=5.):
494
494
  st.setup_cell_images()
495
495
  ns = gemmi.NeighborSearch(st[0], st.cell, cutoff*2).populate() # This is considered crystallographic cell if not 1 1 1. Undesirable result may be seen.
496
496
  cs = gemmi.ContactSearch(cutoff)
497
+ cs.twice = True # since we need all image_idx
497
498
  cs.ignore = gemmi.ContactSearch.Ignore.SameAsu
498
499
  results = cs.find_contacts(ns)
499
- indices = set([r.image_idx for r in results])
500
+ indices = {r.image_idx for r in results}
500
501
  logger.writeln(" contacting copies: {}".format(indices))
501
502
  ops = [st.ncs[i-1] for i in indices] # XXX is this correct? maybe yes as long as identity operator is not there
502
503
  st.ncs.clear()