sequenzo 0.1.17__cp311-cp311-win_amd64.whl → 0.1.19__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sequenzo might be problematic. Click here for more details.

Files changed (475) hide show
  1. sequenzo/__init__.py +64 -8
  2. sequenzo/big_data/clara/clara.py +1 -1
  3. sequenzo/big_data/clara/utils/get_weighted_diss.c +154 -154
  4. sequenzo/big_data/clara/utils/get_weighted_diss.cp311-win_amd64.pyd +0 -0
  5. sequenzo/clustering/KMedoids.py +39 -0
  6. sequenzo/clustering/clustering_c_code.cp311-win_amd64.pyd +0 -0
  7. sequenzo/clustering/hierarchical_clustering.py +304 -8
  8. sequenzo/define_sequence_data.py +44 -3
  9. sequenzo/dissimilarity_measures/c_code.cp311-win_amd64.pyd +0 -0
  10. sequenzo/dissimilarity_measures/get_distance_matrix.py +1 -2
  11. sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +1 -1
  12. sequenzo/dissimilarity_measures/src/DHDdistance.cpp +13 -37
  13. sequenzo/dissimilarity_measures/src/LCPdistance.cpp +13 -37
  14. sequenzo/dissimilarity_measures/src/OMdistance.cpp +12 -47
  15. sequenzo/dissimilarity_measures/src/OMspellDistance.cpp +103 -67
  16. sequenzo/dissimilarity_measures/src/dp_utils.h +160 -0
  17. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_arithmetic.hpp +41 -16
  18. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_complex.hpp +4 -0
  19. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_details.hpp +7 -0
  20. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_logical.hpp +10 -0
  21. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_math.hpp +127 -43
  22. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_memory.hpp +30 -2
  23. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_swizzle.hpp +174 -0
  24. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_trigo.hpp +14 -5
  25. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx.hpp +111 -54
  26. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx2.hpp +131 -9
  27. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512bw.hpp +11 -113
  28. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512dq.hpp +39 -7
  29. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512f.hpp +336 -30
  30. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi.hpp +9 -37
  31. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi2.hpp +58 -0
  32. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common.hpp +1 -0
  33. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common_fwd.hpp +35 -2
  34. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_constants.hpp +3 -1
  35. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_emulated.hpp +17 -0
  36. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx.hpp +13 -0
  37. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_sse.hpp +18 -0
  38. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma4.hpp +13 -0
  39. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_isa.hpp +8 -0
  40. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon.hpp +363 -34
  41. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon64.hpp +7 -0
  42. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_rvv.hpp +13 -0
  43. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_scalar.hpp +41 -4
  44. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse2.hpp +252 -16
  45. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse3.hpp +9 -0
  46. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_ssse3.hpp +12 -1
  47. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sve.hpp +7 -0
  48. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_vsx.hpp +892 -0
  49. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_wasm.hpp +78 -1
  50. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_arch.hpp +3 -1
  51. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_config.hpp +13 -2
  52. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_cpuid.hpp +5 -0
  53. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_inline.hpp +5 -1
  54. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_all_registers.hpp +2 -0
  55. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_api.hpp +64 -1
  56. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch.hpp +36 -0
  57. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_rvv_register.hpp +40 -31
  58. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_traits.hpp +8 -0
  59. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_vsx_register.hpp +77 -0
  60. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/xsimd.hpp +6 -0
  61. sequenzo/dissimilarity_measures/src/xsimd/test/test_basic_math.cpp +6 -0
  62. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch.cpp +54 -2
  63. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_bool.cpp +8 -0
  64. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_cast.cpp +11 -4
  65. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_complex.cpp +18 -0
  66. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_int.cpp +8 -14
  67. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_manip.cpp +216 -173
  68. sequenzo/dissimilarity_measures/src/xsimd/test/test_load_store.cpp +6 -0
  69. sequenzo/dissimilarity_measures/src/xsimd/test/test_memory.cpp +1 -1
  70. sequenzo/dissimilarity_measures/src/xsimd/test/test_power.cpp +7 -4
  71. sequenzo/dissimilarity_measures/src/xsimd/test/test_select.cpp +6 -2
  72. sequenzo/dissimilarity_measures/src/xsimd/test/test_shuffle.cpp +32 -18
  73. sequenzo/dissimilarity_measures/src/xsimd/test/test_utils.hpp +21 -24
  74. sequenzo/dissimilarity_measures/src/xsimd/test/test_xsimd_api.cpp +69 -9
  75. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.c +154 -154
  76. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.cp311-win_amd64.pyd +0 -0
  77. sequenzo/dissimilarity_measures/utils/seqconc.c +154 -154
  78. sequenzo/dissimilarity_measures/utils/seqconc.cp311-win_amd64.pyd +0 -0
  79. sequenzo/dissimilarity_measures/utils/seqdss.c +154 -154
  80. sequenzo/dissimilarity_measures/utils/seqdss.cp311-win_amd64.pyd +0 -0
  81. sequenzo/dissimilarity_measures/utils/seqdur.c +154 -154
  82. sequenzo/dissimilarity_measures/utils/seqdur.cp311-win_amd64.pyd +0 -0
  83. sequenzo/dissimilarity_measures/utils/seqlength.c +154 -154
  84. sequenzo/dissimilarity_measures/utils/seqlength.cp311-win_amd64.pyd +0 -0
  85. sequenzo/multidomain/cat.py +0 -53
  86. sequenzo/multidomain/idcd.py +0 -1
  87. sequenzo/openmp_setup.py +233 -0
  88. sequenzo/sequence_characteristics/__init__.py +4 -0
  89. sequenzo/sequence_characteristics/complexity_index.py +17 -57
  90. sequenzo/sequence_characteristics/overall_cross_sectional_entropy.py +177 -111
  91. sequenzo/sequence_characteristics/plot_characteristics.py +30 -11
  92. sequenzo/sequence_characteristics/simple_characteristics.py +1 -0
  93. sequenzo/sequence_characteristics/state_frequencies_and_entropy_per_sequence.py +9 -3
  94. sequenzo/sequence_characteristics/turbulence.py +47 -67
  95. sequenzo/sequence_characteristics/variance_of_spell_durations.py +19 -9
  96. sequenzo/sequence_characteristics/within_sequence_entropy.py +5 -58
  97. sequenzo/visualization/plot_sequence_index.py +58 -35
  98. sequenzo/visualization/plot_state_distribution.py +57 -36
  99. sequenzo/visualization/plot_transition_matrix.py +21 -22
  100. sequenzo/with_event_history_analysis/__init__.py +35 -0
  101. sequenzo/with_event_history_analysis/sequence_analysis_multi_state_model.py +850 -0
  102. sequenzo/with_event_history_analysis/sequence_history_analysis.py +283 -0
  103. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/METADATA +48 -14
  104. sequenzo-0.1.19.dist-info/RECORD +272 -0
  105. sequenzo/dissimilarity_measures/setup.py +0 -35
  106. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Cholesky/LDLT.h +0 -688
  107. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Cholesky/LLT.h +0 -558
  108. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +0 -99
  109. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +0 -682
  110. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +0 -346
  111. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +0 -462
  112. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +0 -91
  113. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/EigenSolver.h +0 -622
  114. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +0 -418
  115. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +0 -226
  116. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +0 -374
  117. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +0 -158
  118. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/RealQZ.h +0 -657
  119. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/RealSchur.h +0 -558
  120. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +0 -77
  121. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +0 -904
  122. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +0 -87
  123. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +0 -561
  124. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/AlignedBox.h +0 -486
  125. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/AngleAxis.h +0 -247
  126. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/EulerAngles.h +0 -114
  127. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Homogeneous.h +0 -501
  128. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Hyperplane.h +0 -282
  129. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -235
  130. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -232
  131. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Quaternion.h +0 -870
  132. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Rotation2D.h +0 -199
  133. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/RotationBase.h +0 -206
  134. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Scaling.h +0 -188
  135. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Transform.h +0 -1563
  136. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Translation.h +0 -202
  137. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Umeyama.h +0 -166
  138. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -168
  139. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -110
  140. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Householder/Householder.h +0 -176
  141. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -545
  142. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +0 -226
  143. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +0 -212
  144. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +0 -229
  145. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +0 -394
  146. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +0 -453
  147. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +0 -444
  148. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +0 -198
  149. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +0 -117
  150. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Jacobi/Jacobi.h +0 -483
  151. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/KLUSupport/KLUSupport.h +0 -358
  152. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/Determinant.h +0 -117
  153. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/FullPivLU.h +0 -877
  154. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/InverseImpl.h +0 -432
  155. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/PartialPivLU.h +0 -624
  156. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +0 -83
  157. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -351
  158. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/MetisSupport/MetisSupport.h +0 -137
  159. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/OrderingMethods/Amd.h +0 -435
  160. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +0 -1863
  161. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/OrderingMethods/Ordering.h +0 -153
  162. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +0 -678
  163. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +0 -545
  164. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -674
  165. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +0 -97
  166. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -635
  167. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -713
  168. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/HouseholderQR.h +0 -434
  169. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +0 -68
  170. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +0 -335
  171. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/BDCSVD.h +0 -1366
  172. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/JacobiSVD.h +0 -812
  173. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +0 -91
  174. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/SVDBase.h +0 -376
  175. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -414
  176. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +0 -697
  177. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +0 -174
  178. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/AmbiVector.h +0 -378
  179. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/CompressedStorage.h +0 -274
  180. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +0 -352
  181. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  182. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseAssign.h +0 -270
  183. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseBlock.h +0 -571
  184. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseColEtree.h +0 -206
  185. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +0 -370
  186. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +0 -722
  187. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +0 -150
  188. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +0 -342
  189. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +0 -138
  190. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseDot.h +0 -98
  191. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseFuzzy.h +0 -29
  192. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseMap.h +0 -305
  193. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseMatrix.h +0 -1518
  194. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +0 -398
  195. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparsePermutation.h +0 -178
  196. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseProduct.h +0 -181
  197. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseRedux.h +0 -49
  198. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseRef.h +0 -397
  199. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +0 -659
  200. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseSolverBase.h +0 -124
  201. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +0 -198
  202. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseTranspose.h +0 -92
  203. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseTriangularView.h +0 -189
  204. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseUtil.h +0 -186
  205. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseVector.h +0 -478
  206. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseView.h +0 -254
  207. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/TriangularSolver.h +0 -315
  208. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU.h +0 -923
  209. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLUImpl.h +0 -66
  210. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +0 -226
  211. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +0 -110
  212. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +0 -375
  213. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +0 -80
  214. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +0 -181
  215. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +0 -179
  216. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +0 -107
  217. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  218. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +0 -126
  219. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +0 -130
  220. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +0 -223
  221. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +0 -258
  222. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +0 -137
  223. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +0 -136
  224. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +0 -83
  225. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseQR/SparseQR.h +0 -758
  226. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/StdDeque.h +0 -116
  227. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/StdList.h +0 -106
  228. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/StdVector.h +0 -131
  229. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/details.h +0 -84
  230. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +0 -1025
  231. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +0 -642
  232. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/Image.h +0 -82
  233. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/Kernel.h +0 -79
  234. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/RealSvd2x2.h +0 -55
  235. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/blas.h +0 -440
  236. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/lapack.h +0 -152
  237. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/lapacke.h +0 -16292
  238. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/lapacke_mangling.h +0 -17
  239. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  240. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  241. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/BlockMethods.h +0 -1442
  242. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  243. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -177
  244. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  245. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  246. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  247. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  248. sequenzo/dissimilarity_measures/src/eigen/bench/BenchSparseUtil.h +0 -149
  249. sequenzo/dissimilarity_measures/src/eigen/bench/BenchTimer.h +0 -199
  250. sequenzo/dissimilarity_measures/src/eigen/bench/BenchUtil.h +0 -92
  251. sequenzo/dissimilarity_measures/src/eigen/bench/basicbenchmark.h +0 -63
  252. sequenzo/dissimilarity_measures/src/eigen/bench/btl/generic_bench/utils/utilities.h +0 -90
  253. sequenzo/dissimilarity_measures/src/eigen/bench/btl/libs/BLAS/blas.h +0 -675
  254. sequenzo/dissimilarity_measures/src/eigen/bench/btl/libs/BLAS/c_interface_base.h +0 -73
  255. sequenzo/dissimilarity_measures/src/eigen/bench/perf_monitoring/gemm_common.h +0 -67
  256. sequenzo/dissimilarity_measures/src/eigen/bench/perf_monitoring/gemv_common.h +0 -69
  257. sequenzo/dissimilarity_measures/src/eigen/bench/spbench/spbenchsolver.h +0 -573
  258. sequenzo/dissimilarity_measures/src/eigen/bench/spbench/spbenchstyle.h +0 -95
  259. sequenzo/dissimilarity_measures/src/eigen/bench/tensors/benchmark.h +0 -49
  260. sequenzo/dissimilarity_measures/src/eigen/bench/tensors/tensor_benchmarks.h +0 -597
  261. sequenzo/dissimilarity_measures/src/eigen/blas/BandTriangularSolver.h +0 -97
  262. sequenzo/dissimilarity_measures/src/eigen/blas/GeneralRank1Update.h +0 -44
  263. sequenzo/dissimilarity_measures/src/eigen/blas/PackedSelfadjointProduct.h +0 -53
  264. sequenzo/dissimilarity_measures/src/eigen/blas/PackedTriangularMatrixVector.h +0 -79
  265. sequenzo/dissimilarity_measures/src/eigen/blas/PackedTriangularSolverVector.h +0 -88
  266. sequenzo/dissimilarity_measures/src/eigen/blas/Rank2Update.h +0 -57
  267. sequenzo/dissimilarity_measures/src/eigen/blas/common.h +0 -175
  268. sequenzo/dissimilarity_measures/src/eigen/blas/f2c/datatypes.h +0 -24
  269. sequenzo/dissimilarity_measures/src/eigen/blas/level1_cplx_impl.h +0 -155
  270. sequenzo/dissimilarity_measures/src/eigen/blas/level1_impl.h +0 -144
  271. sequenzo/dissimilarity_measures/src/eigen/blas/level1_real_impl.h +0 -122
  272. sequenzo/dissimilarity_measures/src/eigen/blas/level2_cplx_impl.h +0 -360
  273. sequenzo/dissimilarity_measures/src/eigen/blas/level2_impl.h +0 -553
  274. sequenzo/dissimilarity_measures/src/eigen/blas/level2_real_impl.h +0 -306
  275. sequenzo/dissimilarity_measures/src/eigen/blas/level3_impl.h +0 -702
  276. sequenzo/dissimilarity_measures/src/eigen/debug/gdb/__init__.py +0 -1
  277. sequenzo/dissimilarity_measures/src/eigen/debug/gdb/printers.py +0 -314
  278. sequenzo/dissimilarity_measures/src/eigen/demos/mandelbrot/mandelbrot.h +0 -71
  279. sequenzo/dissimilarity_measures/src/eigen/demos/mix_eigen_and_c/binary_library.h +0 -71
  280. sequenzo/dissimilarity_measures/src/eigen/demos/opengl/camera.h +0 -118
  281. sequenzo/dissimilarity_measures/src/eigen/demos/opengl/gpuhelper.h +0 -207
  282. sequenzo/dissimilarity_measures/src/eigen/demos/opengl/icosphere.h +0 -30
  283. sequenzo/dissimilarity_measures/src/eigen/demos/opengl/quaternion_demo.h +0 -114
  284. sequenzo/dissimilarity_measures/src/eigen/demos/opengl/trackball.h +0 -42
  285. sequenzo/dissimilarity_measures/src/eigen/lapack/lapack_common.h +0 -29
  286. sequenzo/dissimilarity_measures/src/eigen/scripts/relicense.py +0 -69
  287. sequenzo/dissimilarity_measures/src/eigen/test/AnnoyingScalar.h +0 -165
  288. sequenzo/dissimilarity_measures/src/eigen/test/MovableScalar.h +0 -35
  289. sequenzo/dissimilarity_measures/src/eigen/test/SafeScalar.h +0 -30
  290. sequenzo/dissimilarity_measures/src/eigen/test/bug1213.h +0 -8
  291. sequenzo/dissimilarity_measures/src/eigen/test/evaluator_common.h +0 -0
  292. sequenzo/dissimilarity_measures/src/eigen/test/gpu_common.h +0 -176
  293. sequenzo/dissimilarity_measures/src/eigen/test/main.h +0 -857
  294. sequenzo/dissimilarity_measures/src/eigen/test/packetmath_test_shared.h +0 -275
  295. sequenzo/dissimilarity_measures/src/eigen/test/product.h +0 -259
  296. sequenzo/dissimilarity_measures/src/eigen/test/random_without_cast_overflow.h +0 -152
  297. sequenzo/dissimilarity_measures/src/eigen/test/solverbase.h +0 -36
  298. sequenzo/dissimilarity_measures/src/eigen/test/sparse.h +0 -204
  299. sequenzo/dissimilarity_measures/src/eigen/test/sparse_solver.h +0 -699
  300. sequenzo/dissimilarity_measures/src/eigen/test/split_test_helper.h +0 -5994
  301. sequenzo/dissimilarity_measures/src/eigen/test/svd_common.h +0 -521
  302. sequenzo/dissimilarity_measures/src/eigen/test/svd_fill.h +0 -118
  303. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +0 -554
  304. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +0 -329
  305. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +0 -247
  306. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +0 -1176
  307. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +0 -1559
  308. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +0 -1093
  309. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +0 -518
  310. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +0 -377
  311. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +0 -1023
  312. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +0 -73
  313. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +0 -6
  314. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +0 -1413
  315. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +0 -575
  316. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +0 -1650
  317. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +0 -1679
  318. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +0 -456
  319. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +0 -1132
  320. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +0 -544
  321. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +0 -214
  322. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +0 -347
  323. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +0 -137
  324. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +0 -6
  325. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +0 -104
  326. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +0 -389
  327. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +0 -1048
  328. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +0 -409
  329. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +0 -236
  330. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +0 -490
  331. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +0 -236
  332. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +0 -983
  333. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +0 -703
  334. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +0 -388
  335. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +0 -669
  336. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +0 -379
  337. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +0 -237
  338. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +0 -191
  339. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +0 -488
  340. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +0 -302
  341. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +0 -33
  342. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +0 -99
  343. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +0 -44
  344. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +0 -79
  345. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +0 -603
  346. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +0 -738
  347. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +0 -247
  348. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +0 -82
  349. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +0 -263
  350. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +0 -216
  351. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +0 -98
  352. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +0 -327
  353. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +0 -311
  354. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +0 -1102
  355. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +0 -708
  356. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +0 -291
  357. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +0 -322
  358. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +0 -998
  359. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +0 -6
  360. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +0 -966
  361. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +0 -582
  362. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +0 -454
  363. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +0 -465
  364. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +0 -528
  365. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +0 -513
  366. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +0 -471
  367. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +0 -161
  368. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +0 -346
  369. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +0 -303
  370. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +0 -264
  371. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +0 -249
  372. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +0 -629
  373. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +0 -293
  374. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +0 -236
  375. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +0 -338
  376. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +0 -669
  377. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +0 -67
  378. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +0 -249
  379. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +0 -486
  380. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +0 -236
  381. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +0 -23
  382. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +0 -40
  383. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +0 -301
  384. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +0 -48
  385. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +0 -20
  386. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +0 -537
  387. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +0 -88
  388. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/EmulateArray.h +0 -261
  389. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +0 -158
  390. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +0 -108
  391. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +0 -730
  392. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +0 -220
  393. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/BVH/BVAlgorithms.h +0 -293
  394. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/BVH/KdBVH.h +0 -223
  395. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +0 -790
  396. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/EulerAngles/EulerAngles.h +0 -355
  397. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/EulerAngles/EulerSystem.h +0 -305
  398. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/FFT/ei_fftw_impl.h +0 -261
  399. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +0 -449
  400. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +0 -187
  401. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +0 -511
  402. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/GMRES.h +0 -335
  403. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/IDRS.h +0 -436
  404. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +0 -90
  405. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/IterationController.h +0 -154
  406. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/MINRES.h +0 -267
  407. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/Scaling.h +0 -193
  408. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +0 -305
  409. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +0 -84
  410. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +0 -202
  411. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +0 -160
  412. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +0 -188
  413. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +0 -396
  414. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +0 -441
  415. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +0 -569
  416. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +0 -373
  417. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +0 -705
  418. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +0 -368
  419. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +0 -117
  420. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +0 -95
  421. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +0 -601
  422. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +0 -657
  423. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/chkder.h +0 -66
  424. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/covar.h +0 -70
  425. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +0 -107
  426. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +0 -79
  427. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +0 -298
  428. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +0 -91
  429. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +0 -30
  430. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +0 -99
  431. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +0 -49
  432. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +0 -130
  433. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Polynomials/Companion.h +0 -280
  434. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +0 -428
  435. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +0 -143
  436. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +0 -352
  437. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineMatrix.h +0 -862
  438. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +0 -212
  439. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineProduct.h +0 -295
  440. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineStorage.h +0 -259
  441. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineUtil.h +0 -89
  442. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +0 -122
  443. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +0 -1079
  444. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +0 -404
  445. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/MarketIO.h +0 -282
  446. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +0 -247
  447. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/RandomSetter.h +0 -349
  448. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +0 -286
  449. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +0 -68
  450. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +0 -357
  451. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +0 -66
  452. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +0 -1959
  453. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +0 -118
  454. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +0 -67
  455. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +0 -167
  456. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +0 -58
  457. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +0 -330
  458. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +0 -58
  459. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +0 -2045
  460. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +0 -79
  461. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +0 -46
  462. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +0 -16
  463. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +0 -46
  464. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +0 -16
  465. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +0 -369
  466. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +0 -54
  467. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +0 -34
  468. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Splines/Spline.h +0 -507
  469. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Splines/SplineFitting.h +0 -431
  470. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Splines/SplineFwd.h +0 -93
  471. sequenzo/dissimilarity_measures/src/eigen/unsupported/test/matrix_functions.h +0 -67
  472. sequenzo-0.1.17.dist-info/RECORD +0 -631
  473. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/WHEEL +0 -0
  474. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/licenses/LICENSE +0 -0
  475. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/top_level.txt +0 -0
@@ -14,6 +14,45 @@ clustering_c_code = importlib.import_module("sequenzo.clustering.clustering_c_co
14
14
 
15
15
  from sequenzo.clustering.utils.disscenter import disscentertrim
16
16
 
17
+ import glob
18
+ import os
19
+ import sys
20
+ import cffi
21
+
22
+ ffi = cffi.FFI()
23
+
24
+ if sys.platform.startswith("win"):
25
+ files = glob.glob(os.path.join(os.path.dirname(__file__), "*.pyd"))
26
+ else:
27
+ files = glob.glob(os.path.join(os.path.dirname(__file__), "*.so"))
28
+
29
+ if not files:
30
+ raise FileNotFoundError("No compiled library found")
31
+
32
+ lib_file = files[0]
33
+
34
+ try:
35
+ # 重定向 stderr 来抑制 cffi 的错误信息输出
36
+ import io
37
+ old_stderr = sys.stderr
38
+ sys.stderr = io.StringIO()
39
+ try:
40
+ lib = ffi.dlopen(lib_file)
41
+ finally:
42
+ # 恢复 stderr
43
+ sys.stderr = old_stderr
44
+ except ImportError as e:
45
+ if sys.platform.startswith("win") and 'cffi mode "ANY" is only "ABI"' in str(e):
46
+ # Windows 降级到 ABI 模式,同样抑制错误信息
47
+ old_stderr = sys.stderr
48
+ sys.stderr = io.StringIO()
49
+ try:
50
+ lib = ffi.dlopen(lib_file)
51
+ finally:
52
+ sys.stderr = old_stderr
53
+ else:
54
+ raise
55
+
17
56
  def KMedoids(diss, k, weights=None, npass=1, initialclust=None, method='PAMonce', cluster_only=False):
18
57
 
19
58
  # Lazily import the c_code module to avoid circular dependencies during installation
@@ -75,6 +75,26 @@ from scipy.spatial.distance import squareform
75
75
  # sklearn metrics no longer needed - using C++ implementation
76
76
  from fastcluster import linkage
77
77
 
78
+ # Optional R integration for Ward D method
79
+ _RPY2_AVAILABLE = False
80
+ ro = None
81
+ importr = None
82
+
83
+ try:
84
+ import rpy2.robjects as ro
85
+ from rpy2.robjects.packages import importr, PackageNotInstalledError
86
+ _RPY2_AVAILABLE = True
87
+ except Exception:
88
+ # Catch any error during rpy2 import/initialization (e.g., R not installed / R_HOME missing on Windows)
89
+ _RPY2_AVAILABLE = False
90
+
91
+ if not _RPY2_AVAILABLE:
92
+ print("[!] Warning: rpy2 not available or R not properly configured. Ward D clustering method will not be supported.")
93
+ print(" To use Ward D: please install R and properly configure rpy2 (make sure `R --version` works).")
94
+ print(" use 'ward_d2', 'average', 'complete', or 'single' methods.")
95
+ print(" See CRAN: https://cloud.r-project.org.")
96
+ print(" Alternatively, use the 'ward_d2', 'average', 'complete', or 'single' method instead.")
97
+
78
98
  # Import C++ cluster quality functions
79
99
  try:
80
100
  from . import clustering_c_code
@@ -83,12 +103,91 @@ except ImportError:
83
103
  _CPP_AVAILABLE = False
84
104
  print("[!] Warning: C++ cluster quality functions not available. Using Python fallback.")
85
105
 
106
+
86
107
  # Corrected imports: Use relative imports *within* the package.
87
- from ..visualization.utils import save_and_show_results
108
+ from sequenzo.visualization.utils import save_and_show_results
88
109
 
89
110
  # Global flag to ensure Ward warning is only shown once per session
90
111
  _WARD_WARNING_SHOWN = False
91
112
 
113
+ def _ensure_r_environment_and_fastcluster():
114
+ """
115
+ Ensure R runtime is discoverable and R package 'fastcluster' is installed.
116
+ - If R is not available, raise with platform-specific installation instructions
117
+ - Choose CRAN mirror
118
+ - Auto-install 'fastcluster' if not present
119
+ """
120
+ print(' - Checking R runtime environment and fastcluster.')
121
+ # Try to load R runtime via rpy2. If this fails, provide installation instructions.
122
+ try:
123
+ utils = importr('utils')
124
+ except Exception as e:
125
+ # Build platform-specific guidance
126
+ if sys.platform == 'darwin':
127
+ guide = (
128
+ "No available R runtime environment detected.\n"
129
+ "Please install and configure R first:\n"
130
+ "1) Installation: Install R from CRAN (recommended macOS package): https://cloud.r-project.org \n"
131
+ " Or use Homebrew: brew install r\n"
132
+ "2) Verification: Run `R --version` in the terminal to check the version information.\n"
133
+ "3) If the error persists, you can set the environment variable manually:\n"
134
+ " export R_HOME=/Library/Frameworks/R.framework/Resources\n"
135
+ " and ensure that `which R` can locate the R executable."
136
+ )
137
+ elif sys.platform.startswith('linux'):
138
+ guide = (
139
+ "No available R runtime environment detected.\n"
140
+ "Please install and configure R first:\n"
141
+ "1) Installation: Use your distribution's package manager "
142
+ "(e.g., Ubuntu: sudo apt-get install -y r-base; CentOS/RHEL: sudo yum install -y R)\n"
143
+ " or download from CRAN: https://cloud.r-project.org \n"
144
+ "2) Verification: Run `R --version` in the terminal.\n"
145
+ "3) If necessary, set R_HOME to point to the R installation directory (e.g., /usr/lib/R)."
146
+ )
147
+ elif sys.platform == 'win32':
148
+ guide = (
149
+ "No available R runtime environment detected.\n"
150
+ "Please install and configure R first:\n"
151
+ "1) Installation: Download and install R for Windows from CRAN: https://cloud.r-project.org \n"
152
+ "2) Verification: Run `R --version` in PowerShell.\n"
153
+ "3) If the error persists, add the R bin directory to your system PATH environment variable,\n"
154
+ " e.g., C:\\Program Files\\R\\R-x.y.z\\bin; if needed, set R_HOME to that R directory."
155
+ )
156
+ else:
157
+ guide = (
158
+ "No available R runtime environment detected. "
159
+ "Please install R and ensure that `R --version` can be executed from the command line.\n"
160
+ "CRAN: https://cloud.r-project.org"
161
+ )
162
+ raise RuntimeError(f"{guide}\nOriginal error: {e}")
163
+
164
+ # Ensure mirror
165
+ try:
166
+ # If a mirror is not chosen, choose the first (may be reset by user later)
167
+ utils.chooseCRANmirror(ind=1)
168
+ except Exception:
169
+ # Fallback to cloud mirror
170
+ try:
171
+ ro.r('options(repos = c(CRAN = "https://cloud.r-project.org"))')
172
+ except Exception:
173
+ pass
174
+
175
+ # Ensure fastcluster installed
176
+ try:
177
+ importr('fastcluster')
178
+ except PackageNotInstalledError:
179
+ try:
180
+ # Try install with explicit repo and limited parallelism
181
+ utils.install_packages('fastcluster', repos='https://cloud.r-project.org', Ncpus=2)
182
+ importr('fastcluster')
183
+ except Exception as install_err:
184
+ raise RuntimeError(
185
+ "Failed to install R package 'fastcluster' automatically. "
186
+ "Please ensure internet access and a working R toolchain are available. "
187
+ f"Original error: {install_err}"
188
+ )
189
+
190
+
92
191
 
93
192
  def _check_euclidean_compatibility(matrix, method):
94
193
  """
@@ -259,6 +358,79 @@ def _clean_distance_matrix(matrix):
259
358
  return matrix
260
359
 
261
360
 
361
+ def _hclust_to_linkage_matrix(linkage_matrix):
362
+ """
363
+ Convert an R `hclust` object to a SciPy-compatible linkage matrix.
364
+
365
+ This function takes an `hclust` object returned by R (e.g., from
366
+ `fastcluster::hclust`) and converts it into the standard linkage matrix
367
+ format used by SciPy (`scipy.cluster.hierarchy.linkage`), which can be
368
+ used for dendrogram plotting or further clustering analysis in Python.
369
+
370
+ Parameters
371
+ ----------
372
+ linkage_matrix : rpy2.robjects.ListVector
373
+ An R `hclust` object. Expected to contain at least the following fields:
374
+ - 'merge': ndarray of shape (n-1, 2), indicating which clusters are merged
375
+ at each step (negative indices for original observations,
376
+ positive indices for previously merged clusters).
377
+ - 'height': ndarray of shape (n-1,), distances at which merges occur.
378
+ - 'order': ordering of the leaves.
379
+
380
+ Returns
381
+ -------
382
+ Z : numpy.ndarray, shape (n-1, 4), dtype=float
383
+ A SciPy-compatible linkage matrix where each row represents a merge:
384
+ - Z[i, 0] : index of the first cluster (0-based)
385
+ - Z[i, 1] : index of the second cluster (0-based)
386
+ - Z[i, 2] : distance between the merged clusters
387
+ - Z[i, 3] : total number of original samples in the newly formed cluster
388
+
389
+ Notes
390
+ -----
391
+ - The conversion handles the difference in indexing:
392
+ - In R's `hclust`, negative numbers in 'merge' indicate original samples
393
+ and positive numbers indicate previously merged clusters (1-based).
394
+ - In the returned SciPy linkage matrix, all indices are converted to 0-based.
395
+ - The function iteratively tracks cluster sizes to populate the fourth column
396
+ (sample counts) required by SciPy.
397
+ """
398
+
399
+ n = len(linkage_matrix.rx2("order")) # 样本数
400
+ merge = np.array(linkage_matrix.rx2("merge"), dtype=int) # (n-1, 2)
401
+ height = np.array(linkage_matrix.rx2("height"), dtype=float)
402
+
403
+ cluster_sizes = np.ones(n, dtype=int) # 单个样本初始大小 = 1
404
+ Z = np.zeros((n - 1, 4), dtype=float)
405
+
406
+ for i in range(n - 1):
407
+ a, b = merge[i]
408
+
409
+ # R hclust 编号负数表示原始样本
410
+ if a < 0:
411
+ idx1 = -a - 1 # 转成 0-based
412
+ size1 = 1
413
+ else:
414
+ idx1 = n + a - 1 # 已合并簇,0-based
415
+ size1 = cluster_sizes[idx1]
416
+
417
+ if b < 0:
418
+ idx2 = -b - 1
419
+ size2 = 1
420
+ else:
421
+ idx2 = n + b - 1
422
+ size2 = cluster_sizes[idx2]
423
+
424
+ Z[i, 0] = idx1
425
+ Z[i, 1] = idx2
426
+ Z[i, 2] = height[i]
427
+ Z[i, 3] = size1 + size2
428
+
429
+ # 更新 cluster_sizes,用于后续簇
430
+ cluster_sizes = np.append(cluster_sizes, size1 + size2)
431
+
432
+ return Z
433
+
262
434
  class Cluster:
263
435
  def __init__(self,
264
436
  matrix,
@@ -358,12 +530,36 @@ class Cluster:
358
530
  try:
359
531
  # Map our method names to fastcluster's expected method names
360
532
  fastcluster_method = self._map_method_name(self.clustering_method)
361
- linkage_matrix = linkage(self.condensed_matrix, method=fastcluster_method)
362
-
533
+
534
+ if self.clustering_method == "ward_d" or self.clustering_method == "ward":
535
+ if not _RPY2_AVAILABLE:
536
+ raise ImportError(
537
+ "rpy2 is required for Ward D clustering method but is not available or R is not properly configured.\n"
538
+ "Install rpy2 and ensure R is properly set up, or install with: pip install sequenzo[r]\n"
539
+ "Alternatively, use 'ward_d2', 'average', 'complete', or 'single' methods."
540
+ )
541
+ # Ensure R and R package fastcluster are available (auto-install if needed)
542
+ _ensure_r_environment_and_fastcluster()
543
+
544
+ fastcluster_r = importr("fastcluster")
545
+
546
+ # 将 full_matrix 转换为 R 矩阵(直接从 Python 数组创建),避免 rpy2 对大向量长度出错
547
+ # 用‘F’强制按列展开,符合 R 的内存布局(列优先)
548
+ full_matrix_r = ro.r.matrix(ro.FloatVector(self.full_matrix.flatten('F')),
549
+ nrow=self.full_matrix.shape[0], ncol=self.full_matrix.shape[1])
550
+ r_om = ro.r['as.dist'](full_matrix_r)
551
+
552
+ linkage_matrix = fastcluster_r.hclust(r_om, method="ward.D")
553
+
554
+ linkage_matrix = _hclust_to_linkage_matrix(linkage_matrix)
555
+
556
+ else:
557
+ linkage_matrix = linkage(self.condensed_matrix, method=fastcluster_method)
558
+
363
559
  # Apply Ward D correction if needed (divide distances by 2 for classic Ward)
364
- if self.clustering_method == "ward_d":
365
- linkage_matrix = self._apply_ward_d_correction(linkage_matrix)
366
-
560
+ # if self.clustering_method == "ward_d":
561
+ # linkage_matrix = self._apply_ward_d_correction(linkage_matrix)
562
+
367
563
  except Exception as e:
368
564
  raise RuntimeError(
369
565
  f"Failed to compute linkage with method '{self.clustering_method}'. "
@@ -1080,5 +1276,105 @@ class ClusterResults:
1080
1276
  save_and_show_results(save_as, dpi)
1081
1277
 
1082
1278
 
1083
-
1084
-
1279
+ # For xinyi's test, because she can't debug in Jupyter :
1280
+ # Traceback (most recent call last):
1281
+ # File "/Applications/PyCharm.app/Contents/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 736, in make_thread_stack_str
1282
+ # append('file="%s" line="%s">' % (make_valid_xml_value(my_file), lineno))
1283
+ # File "/Applications/PyCharm.app/Contents/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_xml.py", line 36, in make_valid_xml_value
1284
+ # return s.replace("&", "&amp;").replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;')
1285
+ # AttributeError: 'tuple' object has no attribute 'replace'
1286
+
1287
+ if __name__ == '__main__':
1288
+ # Import necessary libraries
1289
+ # Your calling code (e.g., in a script or notebook)
1290
+
1291
+ from sequenzo import * # Import the package, give it a short alias
1292
+ import pandas as pd # Data manipulation
1293
+ import numpy as np
1294
+
1295
+ # List all the available datasets in Sequenzo
1296
+ # Now access functions using the alias:
1297
+ print('Available datasets in Sequenzo: ', list_datasets())
1298
+
1299
+ # Load the data that we would like to explore in this tutorial
1300
+ # `df` is the short for `dataframe`, which is a common variable name for a dataset
1301
+ # df = load_dataset('country_co2_emissions')
1302
+ df = load_dataset('mvad')
1303
+
1304
+ # 时间列表
1305
+ time_list = ['Jul.93', 'Aug.93', 'Sep.93', 'Oct.93', 'Nov.93', 'Dec.93',
1306
+ 'Jan.94', 'Feb.94', 'Mar.94', 'Apr.94', 'May.94', 'Jun.94', 'Jul.94',
1307
+ 'Aug.94', 'Sep.94', 'Oct.94', 'Nov.94', 'Dec.94', 'Jan.95', 'Feb.95',
1308
+ 'Mar.95', 'Apr.95', 'May.95', 'Jun.95', 'Jul.95', 'Aug.95', 'Sep.95',
1309
+ 'Oct.95', 'Nov.95', 'Dec.95', 'Jan.96', 'Feb.96', 'Mar.96', 'Apr.96',
1310
+ 'May.96', 'Jun.96', 'Jul.96', 'Aug.96', 'Sep.96', 'Oct.96', 'Nov.96',
1311
+ 'Dec.96', 'Jan.97', 'Feb.97', 'Mar.97', 'Apr.97', 'May.97', 'Jun.97',
1312
+ 'Jul.97', 'Aug.97', 'Sep.97', 'Oct.97', 'Nov.97', 'Dec.97', 'Jan.98',
1313
+ 'Feb.98', 'Mar.98', 'Apr.98', 'May.98', 'Jun.98', 'Jul.98', 'Aug.98',
1314
+ 'Sep.98', 'Oct.98', 'Nov.98', 'Dec.98', 'Jan.99', 'Feb.99', 'Mar.99',
1315
+ 'Apr.99', 'May.99', 'Jun.99']
1316
+
1317
+ # 方法1: 使用pandas获取所有唯一值
1318
+ time_states_df = df[time_list]
1319
+ all_unique_states = set()
1320
+
1321
+ for col in time_list:
1322
+ unique_vals = df[col].dropna().unique() # Remove NaN values
1323
+ all_unique_states.update(unique_vals)
1324
+
1325
+ # 转换为排序的列表
1326
+ states = sorted(list(all_unique_states))
1327
+ print("All unique states:")
1328
+ for i, state in enumerate(states, 1):
1329
+ print(f"{i:2d}. {state}")
1330
+
1331
+ print(f"\nstates list:")
1332
+ print(f"states = {states}")
1333
+
1334
+ # Create a SequenceData object
1335
+
1336
+ # Define the time-span variable
1337
+ time_list = ['Jul.93', 'Aug.93', 'Sep.93', 'Oct.93', 'Nov.93', 'Dec.93',
1338
+ 'Jan.94', 'Feb.94', 'Mar.94', 'Apr.94', 'May.94', 'Jun.94', 'Jul.94',
1339
+ 'Aug.94', 'Sep.94', 'Oct.94', 'Nov.94', 'Dec.94', 'Jan.95', 'Feb.95',
1340
+ 'Mar.95', 'Apr.95', 'May.95', 'Jun.95', 'Jul.95', 'Aug.95', 'Sep.95',
1341
+ 'Oct.95', 'Nov.95', 'Dec.95', 'Jan.96', 'Feb.96', 'Mar.96', 'Apr.96',
1342
+ 'May.96', 'Jun.96', 'Jul.96', 'Aug.96', 'Sep.96', 'Oct.96', 'Nov.96',
1343
+ 'Dec.96', 'Jan.97', 'Feb.97', 'Mar.97', 'Apr.97', 'May.97', 'Jun.97',
1344
+ 'Jul.97', 'Aug.97', 'Sep.97', 'Oct.97', 'Nov.97', 'Dec.97', 'Jan.98',
1345
+ 'Feb.98', 'Mar.98', 'Apr.98', 'May.98', 'Jun.98', 'Jul.98', 'Aug.98',
1346
+ 'Sep.98', 'Oct.98', 'Nov.98', 'Dec.98', 'Jan.99', 'Feb.99', 'Mar.99',
1347
+ 'Apr.99', 'May.99', 'Jun.99']
1348
+
1349
+ states = ['FE', 'HE', 'employment', 'joblessness', 'school', 'training']
1350
+ labels = ['further education', 'higher education', 'employment', 'joblessness', 'school', 'training']
1351
+
1352
+ # TODO: write a try and error: if no such a parameter, then ask to pass the right ones
1353
+ # sequence_data = SequenceData(df, time=time, time_type="year", id_col="country", ids=df['country'].values, states=states)
1354
+
1355
+ sequence_data = SequenceData(df,
1356
+ time=time_list,
1357
+ id_col="id",
1358
+ states=states,
1359
+ labels=labels,
1360
+ )
1361
+
1362
+ om = get_distance_matrix(sequence_data,
1363
+ method="OM",
1364
+ sm="CONSTANT",
1365
+ indel=1)
1366
+
1367
+ cluster = Cluster(om, sequence_data.ids, clustering_method='ward_d')
1368
+ cluster.plot_dendrogram(xlabel="Individuals", ylabel="Distance")
1369
+
1370
+ # Create a ClusterQuality object to evaluate clustering quality
1371
+ cluster_quality = ClusterQuality(cluster)
1372
+ cluster_quality.compute_cluster_quality_scores()
1373
+ cluster_quality.plot_cqi_scores(norm='zscore')
1374
+ summary_table = cluster_quality.get_cqi_table()
1375
+ print(summary_table)
1376
+
1377
+ table = cluster_quality.get_cluster_range_table()
1378
+ # table.to_csv("cluster_quality_table.csv")
1379
+
1380
+ print(table)
@@ -325,7 +325,23 @@ class SequenceData:
325
325
  if non_missing_states <= 20:
326
326
  non_missing_color_list = sns.color_palette("Spectral", non_missing_states)
327
327
  else:
328
- non_missing_color_list = sns.color_palette("cubehelix", non_missing_states)
328
+ # Use a more elegant color palette for many states - combination of viridis and pastel colors
329
+ if non_missing_states <= 40:
330
+ # Use viridis for up to 40 states (more colorful than cubehelix)
331
+ non_missing_color_list = sns.color_palette("viridis", non_missing_states)
332
+ else:
333
+ # For very large state counts, use a custom palette combining multiple schemes
334
+ viridis_colors = sns.color_palette("viridis", min(non_missing_states // 2, 20))
335
+ pastel_colors = sns.color_palette("Set3", min(non_missing_states // 2, 12))
336
+ tab20_colors = sns.color_palette("tab20", min(non_missing_states // 3, 20))
337
+
338
+ # Combine and extend the palette
339
+ combined_colors = viridis_colors + pastel_colors + tab20_colors
340
+ # If we need more colors, cycle through the combined palette
341
+ while len(combined_colors) < non_missing_states:
342
+ combined_colors.extend(combined_colors[:min(len(combined_colors), non_missing_states - len(combined_colors))])
343
+
344
+ non_missing_color_list = combined_colors[:non_missing_states]
329
345
 
330
346
  if reverse_colors:
331
347
  non_missing_color_list = list(reversed(non_missing_color_list))
@@ -342,7 +358,23 @@ class SequenceData:
342
358
  if num_states <= 20:
343
359
  color_list = sns.color_palette("Spectral", num_states)
344
360
  else:
345
- color_list = sns.color_palette("cubehelix", num_states)
361
+ # Use a more elegant color palette for many states - combination of viridis and pastel colors
362
+ if num_states <= 40:
363
+ # Use viridis for up to 40 states (more colorful than cubehelix)
364
+ color_list = sns.color_palette("viridis", num_states)
365
+ else:
366
+ # For very large state counts, use a custom palette combining multiple schemes
367
+ viridis_colors = sns.color_palette("viridis", min(num_states // 2, 20))
368
+ pastel_colors = sns.color_palette("Set3", min(num_states // 2, 12))
369
+ tab20_colors = sns.color_palette("tab20", min(num_states // 3, 20))
370
+
371
+ # Combine and extend the palette
372
+ combined_colors = viridis_colors + pastel_colors + tab20_colors
373
+ # If we need more colors, cycle through the combined palette
374
+ while len(combined_colors) < num_states:
375
+ combined_colors.extend(combined_colors[:min(len(combined_colors), num_states - len(combined_colors))])
376
+
377
+ color_list = combined_colors[:num_states]
346
378
 
347
379
  if reverse_colors:
348
380
  color_list = list(reversed(color_list))
@@ -430,8 +462,17 @@ class SequenceData:
430
462
 
431
463
  def plot_legend(self, save_as=None, dpi=200):
432
464
  """Displays the saved legend for sequence state colors."""
465
+ # Ensure legend handles exist even if get_legend() wasn't called
466
+ legend_handles = getattr(self, "legend_handles", None)
467
+ if not legend_handles:
468
+ legend_handles = [
469
+ plt.Rectangle((0, 0), 1, 1, color=self.color_map[i + 1], label=self.labels[i]
470
+ ) for i in range(len(self.states))
471
+ ]
472
+ self.legend_handles = legend_handles
473
+
433
474
  fig, ax = plt.subplots(figsize=(2, 2))
434
- ax.legend(handles=self.legend_handles, loc='center', title="States", fontsize=10)
475
+ ax.legend(handles=legend_handles, loc='center', title="States", fontsize=10)
435
476
  ax.axis('off')
436
477
 
437
478
  if save_as:
@@ -42,7 +42,6 @@
42
42
  Designates a seqcost method to build sm. "CONSTANT" is not relevant for "DHD".
43
43
  sm is mandatory when method is one of "OM", "OMloc", "OMslen", "OMspell", "OMstran", or "TWED".
44
44
  sm is autogenerated when method is one of "HAM" or "DHD" and sm = NULL.
45
- with.missing : Should the non-deleted missing value be added to the alphabet as an additional state?
46
45
  full.matrix : Default: TRUE. When refseq = NULL, if TRUE, the full distance matrix is returned,
47
46
  if FALSE, an object of class dist is returned,
48
47
  that is, a vector containing only values from the lower triangle of the distance matrix.
@@ -277,7 +276,7 @@ def get_distance_matrix(seqdata=None, method=None, refseq=None, norm="none", ind
277
276
  # OM, OMspell, HAM, DHD
278
277
  if method in om_methods + ["HAM", "DHD"]:
279
278
  if sm_type == "matrix":
280
- if method in [om_methods, "TWED"]:
279
+ if method in om_methods + ["TWED"]:
281
280
  # TODO : checkcost()
282
281
  pass
283
282
  elif method == "HAM":
@@ -142,7 +142,7 @@ def get_substitution_cost_matrix(seqdata, method, cval=None, miss_cost=None, tim
142
142
  # ================================
143
143
  if method in ["INDELS", "INDELSLOG"]:
144
144
  if time_varying:
145
- indels = get_cross_sectional_entropy(seqdata)['Frequencies']
145
+ indels = get_cross_sectional_entropy(seqdata, return_format="dict")['Frequencies']
146
146
  else:
147
147
  ww = seqdata.weights
148
148
  if ww is None:
@@ -4,6 +4,7 @@
4
4
  #include <cmath>
5
5
  #include <iostream>
6
6
  #include "utils.h"
7
+ #include "dp_utils.h"
7
8
  #ifdef _OPENMP
8
9
  #include <omp.h>
9
10
  #endif
@@ -104,26 +105,11 @@ public:
104
105
 
105
106
  py::array_t<double> compute_all_distances() {
106
107
  try {
107
- auto buffer = dist_matrix.mutable_unchecked<2>();
108
-
109
- #pragma omp parallel
110
- {
111
- #pragma omp for schedule(guided)
112
- for (int i = 0; i < nseq; i++) {
113
- for (int j = i; j < nseq; j++) {
114
- buffer(i, j) = compute_distance(i, j);
115
- }
116
- }
117
- }
118
-
119
- #pragma omp for schedule(static)
120
- for (int i = 0; i < nseq; ++i) {
121
- for (int j = i + 1; j < nseq; ++j) {
122
- buffer(j, i) = buffer(i, j);
123
- }
124
- }
125
-
126
- return dist_matrix;
108
+ return dp_utils::compute_all_distances_simple(
109
+ nseq,
110
+ dist_matrix,
111
+ [this](int i, int j){ return this->compute_distance(i, j); }
112
+ );
127
113
  } catch (const std::exception& e) {
128
114
  py::print("Error in compute_all_distances: ", e.what());
129
115
  throw;
@@ -132,23 +118,13 @@ public:
132
118
 
133
119
  py::array_t<double> compute_refseq_distances() {
134
120
  try {
135
- auto buffer = refdist_matrix.mutable_unchecked<2>();
136
-
137
- #pragma omp parallel
138
- {
139
- #pragma omp for schedule(guided)
140
- for (int rseq = rseq1; rseq < rseq2; rseq ++) {
141
- for (int is = 0; is < nseq; is ++) {
142
- if(is == rseq){
143
- buffer(is, rseq-rseq1) = 0;
144
- }else{
145
- buffer(is, rseq-rseq1) = compute_distance(is, rseq);
146
- }
147
- }
148
- }
149
- }
150
-
151
- return refdist_matrix;
121
+ return dp_utils::compute_refseq_distances_simple(
122
+ nseq,
123
+ rseq1,
124
+ rseq2,
125
+ refdist_matrix,
126
+ [this](int is, int rseq){ return this->compute_distance(is, rseq); }
127
+ );
152
128
  } catch (const std::exception& e) {
153
129
  py::print("Error in compute_all_distances: ", e.what());
154
130
  throw;
@@ -3,6 +3,7 @@
3
3
  #include <vector>
4
4
  #include <iostream>
5
5
  #include "utils.h"
6
+ #include "dp_utils.h"
6
7
 
7
8
  namespace py = pybind11;
8
9
 
@@ -71,26 +72,11 @@ public:
71
72
 
72
73
  py::array_t<double> compute_all_distances() {
73
74
  try {
74
- auto buffer = dist_matrix.mutable_unchecked<2>();
75
-
76
- #pragma omp parallel
77
- {
78
- #pragma omp for schedule(static)
79
- for (int i = 0; i < nseq; i++) {
80
- for (int j = i; j < nseq; j++) {
81
- buffer(i, j) = compute_distance(i, j);
82
- }
83
- }
84
- }
85
-
86
- #pragma omp for schedule(static)
87
- for (int i = 0; i < nseq; ++i) {
88
- for (int j = i + 1; j < nseq; ++j) {
89
- buffer(j, i) = buffer(i, j);
90
- }
91
- }
92
-
93
- return dist_matrix;
75
+ return dp_utils::compute_all_distances_simple(
76
+ nseq,
77
+ dist_matrix,
78
+ [this](int i, int j){ return this->compute_distance(i, j); }
79
+ );
94
80
  } catch (const std::exception& e) {
95
81
  py::print("Error in compute_all_distances: ", e.what());
96
82
  throw;
@@ -99,23 +85,13 @@ public:
99
85
 
100
86
  py::array_t<double> compute_refseq_distances() {
101
87
  try {
102
- auto buffer = refdist_matrix.mutable_unchecked<2>();
103
-
104
- #pragma omp parallel
105
- {
106
- #pragma omp for schedule(guided)
107
- for (int rseq = rseq1; rseq < rseq2; rseq ++) {
108
- for (int is = 0; is < nseq; is ++) {
109
- if(is == rseq){
110
- buffer(is, rseq-rseq1) = 0;
111
- }else{
112
- buffer(is, rseq-rseq1) = compute_distance(is, rseq);
113
- }
114
- }
115
- }
116
- }
117
-
118
- return refdist_matrix;
88
+ return dp_utils::compute_refseq_distances_simple(
89
+ nseq,
90
+ rseq1,
91
+ rseq2,
92
+ refdist_matrix,
93
+ [this](int is, int rseq){ return this->compute_distance(is, rseq); }
94
+ );
119
95
  } catch (const std::exception& e) {
120
96
  py::print("Error in compute_all_distances: ", e.what());
121
97
  throw;