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.
- {servalcat-0.4.100 → servalcat-0.4.105}/CMakeLists.txt +1 -1
- {servalcat-0.4.100 → servalcat-0.4.105}/PKG-INFO +5 -5
- {servalcat-0.4.100 → servalcat-0.4.105}/README.md +1 -1
- {servalcat-0.4.100 → servalcat-0.4.105}/pyproject.toml +2 -2
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/__init__.py +2 -2
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine.py +11 -1
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine_spa.py +6 -8
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine_xtal.py +20 -11
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/refmac_wrapper.py +36 -2
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/fofc.py +4 -4
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/run_refmac.py +3 -3
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/commands.py +4 -4
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/fileio.py +78 -39
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/model.py +2 -1
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/symmetry.py +5 -2
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/sigmaa.py +96 -36
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/twin.py +3 -4
- {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/geom.hpp +8 -2
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_refine.py +1 -1
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_spa.py +4 -4
- {servalcat-0.4.100 → servalcat-0.4.105}/LICENSE +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/commit.sh +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/Makefile +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/commands.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/conf.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/help/fofc.txt +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/help/refine_spa.txt +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/help/trim.txt +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/index.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/overview.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/requirements.txt +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/ab42.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/ccpem_input-fs8.png +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/coot_113-fs8.png +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/refined_fsc_1.png +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/chrmine_figs/refined_fsc_2.png +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/index.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/omitmap.rst +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/p4_figs/coot_fofc_omit_4sigma.png +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/docs/spa_examples/p4_figs/pymol_fofc_omit_4sigma.png +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.APACHE +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.BSD +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.GPL +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.LGPL +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.MINPACK +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.MPL2 +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/COPYING.README +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Cholesky +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/CholmodSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Core +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Dense +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Eigen +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Eigenvalues +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Geometry +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Householder +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/IterativeLinearSolvers +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Jacobi +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/KLUSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/LU +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/MetisSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/OrderingMethods +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/PaStiXSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/PardisoSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/QR +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/QtAlignedMalloc +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SPQRSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SVD +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/Sparse +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseCholesky +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseCore +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseLU +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SparseQR +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/StdDeque +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/StdList +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/StdVector +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/SuperLUSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/UmfPackSupport +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Cholesky/LDLT.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Cholesky/LLT.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ArithmeticSequence.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Array.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ArrayBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ArrayWrapper.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Assign.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/AssignEvaluator.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Assign_MKL.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/BandMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Block.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/BooleanRedux.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CommaInitializer.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ConditionEstimator.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CoreEvaluators.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CoreIterators.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseBinaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseNullaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseTernaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseUnaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/CwiseUnaryView.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DenseBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DenseCoeffsBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DenseStorage.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Diagonal.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DiagonalMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/DiagonalProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Dot.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/EigenBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ForceAlignedAccess.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Fuzzy.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/GeneralProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/GenericPacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/GlobalFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/IO.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/IndexedView.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Inverse.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Map.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MapBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MathFunctionsImpl.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Matrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/MatrixBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/NestByValue.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/NoAlias.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/NumTraits.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/PartialReduxEvaluator.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/PermutationMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/PlainObjectBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Product.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ProductEvaluators.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Random.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Redux.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Ref.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Replicate.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Reshaped.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/ReturnByValue.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Reverse.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Select.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SelfAdjointView.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Solve.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SolveTriangular.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/SolverBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/StableNorm.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/StlIterators.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Stride.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Swap.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Transpose.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Transpositions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/TriangularMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/VectorBlock.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/VectorwiseOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/Visitor.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/BFloat16.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/Half.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/Settings.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/MSA/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/ZVector/Complex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/BinaryFunctors.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/NullaryFunctors.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/StlFunctors.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/TernaryFunctors.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/functors/UnaryFunctors.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/Parallelizer.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/products/TriangularSolverVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/BlasUtil.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ConfigureVectorization.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Constants.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ForwardDeclarations.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/IndexedViewHelper.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/IntegralConstant.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/MKL_support.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Macros.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Memory.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/Meta.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/NonMPL2.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/ReshapedHelper.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/StaticAssert.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/SymbolicIndex.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Core/util/XprHelper.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/EigenSolver.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/RealQZ.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/RealSchur.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/AlignedBox.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/AngleAxis.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/EulerAngles.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Homogeneous.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Hyperplane.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Quaternion.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Rotation2D.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/RotationBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Scaling.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Transform.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Translation.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/Umeyama.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Householder/Householder.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/Jacobi/Jacobi.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/KLUSupport/KLUSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/Determinant.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/FullPivLU.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/InverseImpl.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/PartialPivLU.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/MetisSupport/MetisSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/OrderingMethods/Amd.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/OrderingMethods/Ordering.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/HouseholderQR.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/BDCSVD.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/JacobiSVD.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/SVDBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/AmbiVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/CompressedStorage.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseAssign.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseBlock.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseColEtree.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseDot.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseFuzzy.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseMap.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparsePermutation.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseProduct.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseRedux.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseRef.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseSolverBase.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseTranspose.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseTriangularView.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseUtil.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/SparseView.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseCore/TriangularSolver.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLUImpl.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SparseQR/SparseQR.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/StdDeque.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/StdList.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/StdVector.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/StlSupport/details.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/Image.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/Kernel.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/RealSvd2x2.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/blas.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/lapack.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/lapacke.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/misc/lapacke_mangling.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/BlockMethods.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/eigen/README.md +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/__main__.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/__init__.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/cgsolve.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/refine_geom.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/spa.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refine/xtal.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/__init__.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/exte.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/refmac/refmac_keywords.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/__init__.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/fsc.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/localcc.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/realspcc_from_var.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/shift_maps.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/shiftback.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/spa/translate.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/__init__.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/generate_operators.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/hkl.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/logger.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/maps.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/refmac.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/utils/restraints.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/__init__.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/french_wilson.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/servalcat/xtal/run_refmac_small.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/amplitude.cpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/array.h +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/ext.cpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/intensity.cpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/lambertw.hpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/math.hpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/cgsolve.hpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/ll.hpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/refine/ncsr.hpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/refine.cpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/src/twin.cpp +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/5e5z/5e5z.mtz.gz +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/5e5z/5e5z.pdb.gz +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.cif +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.hkl +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.ins +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.mtz +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/biotin/biotin_talos.pdb +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/dict/acedrg_link_4D4-MS6.cif +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/dict/acedrg_link_MS6-GLY.cif +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_for_ci.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_misc.py +0 -0
- {servalcat-0.4.100 → servalcat-0.4.105}/tests/test_xtal.py +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: servalcat
|
|
3
|
-
Version: 0.4.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 = [
|
|
@@ -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
|
-
|
|
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
|
-
|
|
154
|
-
|
|
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
|
-
|
|
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 {
|
|
324
|
-
""".format(prefix=args.output_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 {
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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"
|
|
265
|
+
labs = ["F_est", "F_exp"]
|
|
257
266
|
elif is_int:
|
|
258
|
-
labs = ["I", "SIGI", "
|
|
267
|
+
labs = ["I", "SIGI", "F_est"]
|
|
259
268
|
else:
|
|
260
|
-
labs = ["FP", "SIGFP"
|
|
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,
|
|
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
|
|
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="
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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"),
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
167
|
-
|
|
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
|
-
|
|
175
|
-
|
|
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(*
|
|
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
|
|
200
|
-
|
|
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 =
|
|
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
|
-
|
|
213
|
-
|
|
214
|
-
logger.writeln(" New cell= {:.1f} {:.1f} {:.1f} {:.1f} {:.1f} {:.1f}".format(*
|
|
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 [
|
|
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
|
-
|
|
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
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
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
|
-
|
|
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 =
|
|
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()
|