sequenzo 0.1.17__cp39-cp39-macosx_10_9_universal2.whl → 0.1.19__cp39-cp39-macosx_10_9_universal2.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 (423) 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 +157 -157
  4. sequenzo/big_data/clara/utils/get_weighted_diss.cpython-39-darwin.so +0 -0
  5. sequenzo/clustering/KMedoids.py +39 -0
  6. sequenzo/clustering/hierarchical_clustering.py +304 -8
  7. sequenzo/define_sequence_data.py +44 -3
  8. sequenzo/dissimilarity_measures/c_code.cpython-39-darwin.so +0 -0
  9. sequenzo/dissimilarity_measures/get_distance_matrix.py +1 -2
  10. sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +1 -1
  11. sequenzo/dissimilarity_measures/src/DHDdistance.cpp +13 -37
  12. sequenzo/dissimilarity_measures/src/LCPdistance.cpp +13 -37
  13. sequenzo/dissimilarity_measures/src/OMdistance.cpp +12 -47
  14. sequenzo/dissimilarity_measures/src/OMspellDistance.cpp +103 -67
  15. sequenzo/dissimilarity_measures/src/dp_utils.h +160 -0
  16. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_arithmetic.hpp +41 -16
  17. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_complex.hpp +4 -0
  18. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_details.hpp +7 -0
  19. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_logical.hpp +10 -0
  20. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_math.hpp +127 -43
  21. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_memory.hpp +30 -2
  22. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_swizzle.hpp +174 -0
  23. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_trigo.hpp +14 -5
  24. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx.hpp +111 -54
  25. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx2.hpp +131 -9
  26. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512bw.hpp +11 -113
  27. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512dq.hpp +39 -7
  28. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512f.hpp +336 -30
  29. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi.hpp +9 -37
  30. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi2.hpp +58 -0
  31. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common.hpp +1 -0
  32. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common_fwd.hpp +35 -2
  33. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_constants.hpp +3 -1
  34. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_emulated.hpp +17 -0
  35. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx.hpp +13 -0
  36. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_sse.hpp +18 -0
  37. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma4.hpp +13 -0
  38. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_isa.hpp +8 -0
  39. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon.hpp +363 -34
  40. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon64.hpp +7 -0
  41. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_rvv.hpp +13 -0
  42. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_scalar.hpp +41 -4
  43. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse2.hpp +252 -16
  44. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse3.hpp +9 -0
  45. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_ssse3.hpp +12 -1
  46. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sve.hpp +7 -0
  47. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_vsx.hpp +892 -0
  48. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_wasm.hpp +78 -1
  49. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_arch.hpp +3 -1
  50. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_config.hpp +13 -2
  51. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_cpuid.hpp +5 -0
  52. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_inline.hpp +5 -1
  53. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_all_registers.hpp +2 -0
  54. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_api.hpp +64 -1
  55. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch.hpp +36 -0
  56. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_rvv_register.hpp +40 -31
  57. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_traits.hpp +8 -0
  58. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_vsx_register.hpp +77 -0
  59. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/xsimd.hpp +6 -0
  60. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.c +157 -157
  61. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.cpython-39-darwin.so +0 -0
  62. sequenzo/dissimilarity_measures/utils/seqconc.c +157 -157
  63. sequenzo/dissimilarity_measures/utils/seqconc.cpython-39-darwin.so +0 -0
  64. sequenzo/dissimilarity_measures/utils/seqdss.c +157 -157
  65. sequenzo/dissimilarity_measures/utils/seqdss.cpython-39-darwin.so +0 -0
  66. sequenzo/dissimilarity_measures/utils/seqdur.c +157 -157
  67. sequenzo/dissimilarity_measures/utils/seqdur.cpython-39-darwin.so +0 -0
  68. sequenzo/dissimilarity_measures/utils/seqlength.c +157 -157
  69. sequenzo/dissimilarity_measures/utils/seqlength.cpython-39-darwin.so +0 -0
  70. sequenzo/multidomain/cat.py +0 -53
  71. sequenzo/multidomain/idcd.py +0 -1
  72. sequenzo/openmp_setup.py +233 -0
  73. sequenzo/sequence_characteristics/__init__.py +4 -0
  74. sequenzo/sequence_characteristics/complexity_index.py +17 -57
  75. sequenzo/sequence_characteristics/overall_cross_sectional_entropy.py +177 -111
  76. sequenzo/sequence_characteristics/plot_characteristics.py +30 -11
  77. sequenzo/sequence_characteristics/simple_characteristics.py +1 -0
  78. sequenzo/sequence_characteristics/state_frequencies_and_entropy_per_sequence.py +9 -3
  79. sequenzo/sequence_characteristics/turbulence.py +47 -67
  80. sequenzo/sequence_characteristics/variance_of_spell_durations.py +19 -9
  81. sequenzo/sequence_characteristics/within_sequence_entropy.py +5 -58
  82. sequenzo/visualization/plot_sequence_index.py +58 -35
  83. sequenzo/visualization/plot_state_distribution.py +57 -36
  84. sequenzo/visualization/plot_transition_matrix.py +21 -22
  85. sequenzo/with_event_history_analysis/__init__.py +35 -0
  86. sequenzo/with_event_history_analysis/sequence_analysis_multi_state_model.py +850 -0
  87. sequenzo/with_event_history_analysis/sequence_history_analysis.py +283 -0
  88. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/METADATA +48 -14
  89. sequenzo-0.1.19.dist-info/RECORD +215 -0
  90. sequenzo/dissimilarity_measures/setup.py +0 -35
  91. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Cholesky/LDLT.h +0 -688
  92. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Cholesky/LLT.h +0 -558
  93. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +0 -99
  94. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +0 -682
  95. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +0 -346
  96. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +0 -462
  97. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +0 -91
  98. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/EigenSolver.h +0 -622
  99. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +0 -418
  100. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +0 -226
  101. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +0 -374
  102. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +0 -158
  103. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/RealQZ.h +0 -657
  104. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/RealSchur.h +0 -558
  105. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +0 -77
  106. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +0 -904
  107. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +0 -87
  108. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +0 -561
  109. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/AlignedBox.h +0 -486
  110. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/AngleAxis.h +0 -247
  111. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/EulerAngles.h +0 -114
  112. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Homogeneous.h +0 -501
  113. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Hyperplane.h +0 -282
  114. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -235
  115. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -232
  116. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Quaternion.h +0 -870
  117. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Rotation2D.h +0 -199
  118. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/RotationBase.h +0 -206
  119. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Scaling.h +0 -188
  120. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Transform.h +0 -1563
  121. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Translation.h +0 -202
  122. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/Umeyama.h +0 -166
  123. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -168
  124. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -110
  125. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Householder/Householder.h +0 -176
  126. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -545
  127. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +0 -226
  128. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +0 -212
  129. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +0 -229
  130. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +0 -394
  131. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +0 -453
  132. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +0 -444
  133. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +0 -198
  134. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +0 -117
  135. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/Jacobi/Jacobi.h +0 -483
  136. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/KLUSupport/KLUSupport.h +0 -358
  137. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/Determinant.h +0 -117
  138. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/FullPivLU.h +0 -877
  139. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/InverseImpl.h +0 -432
  140. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/PartialPivLU.h +0 -624
  141. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +0 -83
  142. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -351
  143. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/MetisSupport/MetisSupport.h +0 -137
  144. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/OrderingMethods/Amd.h +0 -435
  145. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +0 -1863
  146. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/OrderingMethods/Ordering.h +0 -153
  147. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +0 -678
  148. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +0 -545
  149. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -674
  150. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +0 -97
  151. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -635
  152. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -713
  153. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/HouseholderQR.h +0 -434
  154. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +0 -68
  155. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +0 -335
  156. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/BDCSVD.h +0 -1366
  157. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/JacobiSVD.h +0 -812
  158. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +0 -91
  159. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/SVDBase.h +0 -376
  160. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -414
  161. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +0 -697
  162. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +0 -174
  163. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/AmbiVector.h +0 -378
  164. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/CompressedStorage.h +0 -274
  165. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +0 -352
  166. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  167. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseAssign.h +0 -270
  168. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseBlock.h +0 -571
  169. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseColEtree.h +0 -206
  170. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +0 -370
  171. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +0 -722
  172. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +0 -150
  173. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +0 -342
  174. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +0 -138
  175. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseDot.h +0 -98
  176. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseFuzzy.h +0 -29
  177. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseMap.h +0 -305
  178. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseMatrix.h +0 -1518
  179. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +0 -398
  180. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparsePermutation.h +0 -178
  181. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseProduct.h +0 -181
  182. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseRedux.h +0 -49
  183. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseRef.h +0 -397
  184. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +0 -659
  185. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseSolverBase.h +0 -124
  186. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +0 -198
  187. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseTranspose.h +0 -92
  188. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseTriangularView.h +0 -189
  189. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseUtil.h +0 -186
  190. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseVector.h +0 -478
  191. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/SparseView.h +0 -254
  192. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseCore/TriangularSolver.h +0 -315
  193. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU.h +0 -923
  194. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLUImpl.h +0 -66
  195. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +0 -226
  196. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +0 -110
  197. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +0 -375
  198. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +0 -80
  199. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +0 -181
  200. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +0 -179
  201. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +0 -107
  202. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  203. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +0 -126
  204. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +0 -130
  205. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +0 -223
  206. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +0 -258
  207. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +0 -137
  208. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +0 -136
  209. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +0 -83
  210. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SparseQR/SparseQR.h +0 -758
  211. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/StdDeque.h +0 -116
  212. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/StdList.h +0 -106
  213. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/StdVector.h +0 -131
  214. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/StlSupport/details.h +0 -84
  215. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +0 -1025
  216. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +0 -642
  217. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/Image.h +0 -82
  218. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/Kernel.h +0 -79
  219. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/RealSvd2x2.h +0 -55
  220. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/blas.h +0 -440
  221. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/lapack.h +0 -152
  222. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/lapacke.h +0 -16292
  223. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/misc/lapacke_mangling.h +0 -17
  224. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  225. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  226. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/BlockMethods.h +0 -1442
  227. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  228. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -177
  229. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  230. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  231. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  232. sequenzo/dissimilarity_measures/src/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  233. sequenzo/dissimilarity_measures/src/eigen/blas/BandTriangularSolver.h +0 -97
  234. sequenzo/dissimilarity_measures/src/eigen/blas/GeneralRank1Update.h +0 -44
  235. sequenzo/dissimilarity_measures/src/eigen/blas/PackedSelfadjointProduct.h +0 -53
  236. sequenzo/dissimilarity_measures/src/eigen/blas/PackedTriangularMatrixVector.h +0 -79
  237. sequenzo/dissimilarity_measures/src/eigen/blas/PackedTriangularSolverVector.h +0 -88
  238. sequenzo/dissimilarity_measures/src/eigen/blas/Rank2Update.h +0 -57
  239. sequenzo/dissimilarity_measures/src/eigen/blas/common.h +0 -175
  240. sequenzo/dissimilarity_measures/src/eigen/blas/f2c/datatypes.h +0 -24
  241. sequenzo/dissimilarity_measures/src/eigen/blas/level1_cplx_impl.h +0 -155
  242. sequenzo/dissimilarity_measures/src/eigen/blas/level1_impl.h +0 -144
  243. sequenzo/dissimilarity_measures/src/eigen/blas/level1_real_impl.h +0 -122
  244. sequenzo/dissimilarity_measures/src/eigen/blas/level2_cplx_impl.h +0 -360
  245. sequenzo/dissimilarity_measures/src/eigen/blas/level2_impl.h +0 -553
  246. sequenzo/dissimilarity_measures/src/eigen/blas/level2_real_impl.h +0 -306
  247. sequenzo/dissimilarity_measures/src/eigen/blas/level3_impl.h +0 -702
  248. sequenzo/dissimilarity_measures/src/eigen/debug/gdb/__init__.py +0 -1
  249. sequenzo/dissimilarity_measures/src/eigen/debug/gdb/printers.py +0 -314
  250. sequenzo/dissimilarity_measures/src/eigen/lapack/lapack_common.h +0 -29
  251. sequenzo/dissimilarity_measures/src/eigen/scripts/relicense.py +0 -69
  252. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +0 -554
  253. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +0 -329
  254. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +0 -247
  255. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +0 -1176
  256. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +0 -1559
  257. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +0 -1093
  258. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +0 -518
  259. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +0 -377
  260. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +0 -1023
  261. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +0 -73
  262. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +0 -6
  263. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +0 -1413
  264. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +0 -575
  265. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +0 -1650
  266. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +0 -1679
  267. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +0 -456
  268. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +0 -1132
  269. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +0 -544
  270. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +0 -214
  271. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +0 -347
  272. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +0 -137
  273. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +0 -6
  274. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +0 -104
  275. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +0 -389
  276. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +0 -1048
  277. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +0 -409
  278. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +0 -236
  279. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +0 -490
  280. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +0 -236
  281. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +0 -983
  282. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +0 -703
  283. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +0 -388
  284. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +0 -669
  285. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +0 -379
  286. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +0 -237
  287. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +0 -191
  288. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +0 -488
  289. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +0 -302
  290. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +0 -33
  291. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +0 -99
  292. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +0 -44
  293. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +0 -79
  294. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +0 -603
  295. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +0 -738
  296. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +0 -247
  297. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +0 -82
  298. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +0 -263
  299. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +0 -216
  300. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +0 -98
  301. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +0 -327
  302. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +0 -311
  303. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +0 -1102
  304. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +0 -708
  305. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +0 -291
  306. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +0 -322
  307. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +0 -998
  308. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +0 -6
  309. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +0 -966
  310. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +0 -582
  311. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +0 -454
  312. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +0 -465
  313. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +0 -528
  314. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +0 -513
  315. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +0 -471
  316. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +0 -161
  317. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +0 -346
  318. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +0 -303
  319. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +0 -264
  320. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +0 -249
  321. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +0 -629
  322. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +0 -293
  323. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +0 -236
  324. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +0 -338
  325. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +0 -669
  326. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +0 -67
  327. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +0 -249
  328. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +0 -486
  329. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +0 -236
  330. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +0 -23
  331. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +0 -40
  332. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +0 -301
  333. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +0 -48
  334. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +0 -20
  335. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +0 -537
  336. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +0 -88
  337. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/EmulateArray.h +0 -261
  338. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +0 -158
  339. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +0 -108
  340. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +0 -730
  341. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +0 -220
  342. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/BVH/BVAlgorithms.h +0 -293
  343. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/BVH/KdBVH.h +0 -223
  344. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +0 -790
  345. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/EulerAngles/EulerAngles.h +0 -355
  346. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/EulerAngles/EulerSystem.h +0 -305
  347. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/FFT/ei_fftw_impl.h +0 -261
  348. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +0 -449
  349. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +0 -187
  350. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +0 -511
  351. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/GMRES.h +0 -335
  352. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/IDRS.h +0 -436
  353. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +0 -90
  354. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/IterationController.h +0 -154
  355. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/MINRES.h +0 -267
  356. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/IterativeSolvers/Scaling.h +0 -193
  357. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +0 -305
  358. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +0 -84
  359. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +0 -202
  360. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +0 -160
  361. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +0 -188
  362. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +0 -396
  363. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +0 -441
  364. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +0 -569
  365. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +0 -373
  366. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +0 -705
  367. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +0 -368
  368. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +0 -117
  369. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +0 -95
  370. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +0 -601
  371. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +0 -657
  372. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/chkder.h +0 -66
  373. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/covar.h +0 -70
  374. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +0 -107
  375. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +0 -79
  376. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +0 -298
  377. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +0 -91
  378. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +0 -30
  379. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +0 -99
  380. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +0 -49
  381. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +0 -130
  382. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Polynomials/Companion.h +0 -280
  383. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +0 -428
  384. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +0 -143
  385. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +0 -352
  386. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineMatrix.h +0 -862
  387. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +0 -212
  388. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineProduct.h +0 -295
  389. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineStorage.h +0 -259
  390. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Skyline/SkylineUtil.h +0 -89
  391. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +0 -122
  392. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +0 -1079
  393. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +0 -404
  394. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/MarketIO.h +0 -282
  395. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +0 -247
  396. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SparseExtra/RandomSetter.h +0 -349
  397. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +0 -286
  398. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +0 -68
  399. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +0 -357
  400. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +0 -66
  401. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +0 -1959
  402. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +0 -118
  403. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +0 -67
  404. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +0 -167
  405. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +0 -58
  406. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +0 -330
  407. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +0 -58
  408. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +0 -2045
  409. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +0 -79
  410. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +0 -46
  411. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +0 -16
  412. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +0 -46
  413. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +0 -16
  414. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +0 -369
  415. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +0 -54
  416. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +0 -34
  417. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Splines/Spline.h +0 -507
  418. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Splines/SplineFitting.h +0 -431
  419. sequenzo/dissimilarity_measures/src/eigen/unsupported/Eigen/src/Splines/SplineFwd.h +0 -93
  420. sequenzo-0.1.17.dist-info/RECORD +0 -537
  421. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/WHEEL +0 -0
  422. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/licenses/LICENSE +0 -0
  423. {sequenzo-0.1.17.dist-info → sequenzo-0.1.19.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  """
2
- @Author : 李欣怡
2
+ @Author : Xinyi Li, Yuqi Liang
3
3
  @File : variance_of_spell_durations.py
4
4
  @Time : 2025/9/24 14:22
5
5
  @Desc : Variance of spell durations of individual state sequences.
@@ -22,9 +22,9 @@ from .simple_characteristics import cut_prefix
22
22
 
23
23
  def get_spell_duration_variance(seqdata, type=1):
24
24
  if not hasattr(seqdata, 'seqdata'):
25
- raise ValueError(" [!] data is NOT a sequence object, see SequenceData function to create one.")
25
+ raise ValueError("[!] data is NOT a sequence object, see SequenceData function to create one.")
26
26
  if type not in [1, 2]:
27
- raise ValueError(" [!] type must be 1 or 2.")
27
+ raise ValueError("[!] type must be 1 or 2.")
28
28
 
29
29
  with open(os.devnull, 'w') as fnull:
30
30
  with redirect_stdout(fnull):
@@ -33,7 +33,7 @@ def get_spell_duration_variance(seqdata, type=1):
33
33
  lgth = seqlength(seqdata)
34
34
  dlgth = seqlength(dss)
35
35
  sdist = get_state_freq_and_entropy_per_seq(seqdata)
36
- nnvisit = (sdist==0).sum(axis=1)
36
+ nnvisit = (sdist.iloc[:, 1:]==0).sum(axis=1)
37
37
 
38
38
  def realvar(x):
39
39
  n = len(x)
@@ -57,7 +57,8 @@ def get_spell_duration_variance(seqdata, type=1):
57
57
  # ret = (np.nansum(ddur, axis=1) + nnvisit * (meand ** 2)) / (dlgth + nnvisit)
58
58
  ddur = pd.DataFrame(ddur.tolist())
59
59
  sum_sqdiff = np.nansum(ddur.to_numpy(), axis=1)
60
- ret = (sum_sqdiff + nnvisit.to_numpy() * (meand.to_numpy() ** 2)) / (dlgth + nnvisit.to_numpy())
60
+ ret_values = (sum_sqdiff + nnvisit.to_numpy() * (meand.to_numpy() ** 2)) / (dlgth + nnvisit.to_numpy())
61
+ ret = pd.Series(ret_values, index=meand.index)
61
62
 
62
63
  alph = seqdata.states.copy()
63
64
  alph_size = len(alph)
@@ -67,10 +68,19 @@ def get_spell_duration_variance(seqdata, type=1):
67
68
  maxnnv = np.where(dlgth == 1, alph_size - 1, alph_size - 2)
68
69
 
69
70
  meand_max = meand.to_numpy() * (dlgth + nnvisit.to_numpy()) / (dlgth + maxnnv)
70
- var_max = ((dlgth-1) * (1-meand_max)**2 + (lgth - dlgth + 1 - meand_max)**2 + maxnnv * meand_max**2) / (dlgth + maxnnv)
71
+ var_max_values = ((dlgth-1) * (1-meand_max)**2 + (lgth - dlgth + 1 - meand_max)**2 + maxnnv * meand_max**2) / (dlgth + maxnnv)
72
+ var_max = pd.Series(var_max_values, index=meand.index)
73
+
74
+ meand.index = seqdata.seqdata.index
75
+ ret.index = seqdata.seqdata.index
76
+ var_max.index = seqdata.seqdata.index
77
+
78
+ meand = meand.to_frame("meand")
79
+ ret = ret.to_frame("var_spell_dur")
80
+ var_max = var_max.to_frame("var_max")
71
81
 
72
82
  return {
73
- "meand": meand,
74
- "result": ret,
75
- "vmax": var_max
83
+ "meand": meand.reset_index().rename(columns={"index": "ID"}),
84
+ "result": ret.reset_index().rename(columns={"index": "ID"}),
85
+ "vmax": var_max.reset_index().rename(columns={"index": "ID"}),
76
86
  }
@@ -19,7 +19,7 @@ from .state_frequencies_and_entropy_per_sequence import get_state_freq_and_entro
19
19
 
20
20
  def get_within_sequence_entropy(seqdata, norm=True, base=np.e, silent=True):
21
21
  if not isinstance(seqdata, SequenceData):
22
- raise ValueError(" [!] data is NOT a sequence object, see SequenceData function to create one.")
22
+ raise ValueError("[!] data is NOT a sequence object, see SequenceData function to create one.")
23
23
 
24
24
  states = seqdata.states.copy()
25
25
 
@@ -29,68 +29,15 @@ def get_within_sequence_entropy(seqdata, norm=True, base=np.e, silent=True):
29
29
  with open(os.devnull, 'w') as fnull:
30
30
  with redirect_stdout(fnull):
31
31
  iseqtab = get_state_freq_and_entropy_per_seq(seqdata=seqdata)
32
+ iseqtab.index = seqdata.seqdata.index
32
33
 
33
- ient = iseqtab.apply(lambda row: entropy(row, base=base), axis=1)
34
+ ient = iseqtab.iloc[:, 1:].apply(lambda row: entropy(row, base=base), axis=1)
34
35
 
35
36
  if norm:
36
37
  maxent = np.log(len(states))
37
38
  ient = ient / maxent
38
39
 
39
- ient.columns = ['Entropy']
40
- ient.index = seqdata.seqdata.index
40
+ ient = pd.DataFrame(ient, index=seqdata.seqdata.index, columns=['Entropy'])
41
+ ient = ient.reset_index().rename(columns={'index': 'ID'})
41
42
 
42
43
  return ient
43
-
44
-
45
- if __name__ == "__main__":
46
- # ===============================
47
- # Sohee
48
- # ===============================
49
- # df = pd.read_csv('D:/college/research/QiQi/sequenzo/data_and_output/orignal data/sohee/sequence_data.csv')
50
- # time_list = list(df.columns)[1:133]
51
- # states = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
52
- # # states = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
53
- # labels = ['FT+WC', 'FT+BC', 'PT+WC', 'PT+BC', 'U', 'OLF']
54
- # sequence_data = SequenceData(df, time=time_list, states=states, labels=labels, id_col="PID")
55
- # res = seqient(sequence_data)
56
-
57
- # ===============================
58
- # kass
59
- # ===============================
60
- # df = pd.read_csv('D:/college/research/QiQi/sequenzo/files/orignal data/kass/wide_civil_final_df.csv')
61
- # time_list = list(df.columns)[1:]
62
- # states = ['Extensive Warfare', 'Limited Violence', 'No Violence', 'Pervasive Warfare', 'Prolonged Warfare',
63
- # 'Serious Violence', 'Serious Warfare', 'Sporadic Violence', 'Technological Warfare', 'Total Warfare']
64
- # sequence_data = SequenceData(df, time=time_list, states=states, id_col="COUNTRY")
65
- # res = seqient(sequence_data)
66
-
67
- # ===============================
68
- # CO2
69
- # ===============================
70
- # df = pd.read_csv("D:/country_co2_emissions_missing.csv")
71
- # _time = list(df.columns)[1:]
72
- # states = ['Very Low', 'Low', 'Middle', 'High', 'Very High']
73
- # sequence_data = SequenceData(df, time=_time, id_col="country", states=states)
74
- # res = seqient(sequence_data)
75
-
76
- # ===============================
77
- # detailed
78
- # ===============================
79
- # df = pd.read_csv("D:/college/research/QiQi/sequenzo/data_and_output/sampled_data_sets/detailed_data/sampled_1000_data.csv")
80
- # _time = list(df.columns)[4:]
81
- # states = ['data', 'data & intensive math', 'hardware', 'research', 'software', 'software & hardware', 'support & test']
82
- # sequence_data = SequenceData(df[['worker_id', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10']],
83
- # time=_time, id_col="worker_id", states=states)
84
- # res = seqient(sequence_data)
85
-
86
- # ===============================
87
- # broad
88
- # ===============================
89
- df = pd.read_csv("D:/college/research/QiQi/sequenzo/data_and_output/sampled_data_sets/broad_data/sampled_1000_data.csv")
90
- _time = list(df.columns)[4:]
91
- states = ['Non-computing', 'Non-technical computing', 'Technical computing']
92
- sequence_data = SequenceData(df[['worker_id', 'C1', 'C2', 'C3', 'C4', 'C5']],
93
- time=_time, id_col="worker_id", states=states)
94
- res = get_within_sequence_entropy(sequence_data)
95
-
96
- print(res)
@@ -289,10 +289,12 @@ def sort_sequences_by_method(seqdata, method="unsorted", mask=None, distance_mat
289
289
 
290
290
 
291
291
  def plot_sequence_index(seqdata: SequenceData,
292
- show_by_category=None,
293
- category_labels=None,
294
- id_group_df=None,
295
- categories=None,
292
+ # Grouping parameters
293
+ group_by_column=None,
294
+ group_dataframe=None,
295
+ group_column_name=None,
296
+ group_labels=None,
297
+ # Other parameters
296
298
  sort_by="lexicographic",
297
299
  sort_by_weight=False,
298
300
  weights="auto",
@@ -320,13 +322,34 @@ def plot_sequence_index(seqdata: SequenceData,
320
322
  This function creates index plots that visualize sequences as horizontal lines,
321
323
  with different sorting options matching R's TraMineR functionality.
322
324
 
325
+ **Two API modes for grouping:**
326
+
327
+ 1. **Simplified API** (when grouping info is already in the data):
328
+ ```python
329
+ plot_sequence_index(seqdata, group_by_column="Cluster", group_labels=cluster_labels)
330
+ ```
331
+
332
+ 2. **Complete API** (when grouping info is in a separate dataframe):
333
+ ```python
334
+ plot_sequence_index(seqdata, group_dataframe=membership_df,
335
+ group_column_name="Cluster", group_labels=cluster_labels)
336
+ ```
337
+
323
338
  :param seqdata: SequenceData object containing sequence information
324
- :param show_by_category: (str, optional) Simple way to create grouped plots.
325
- Specify the column name from the original data (e.g., "sex", "education").
326
- This will automatically create separate plots for each category.
327
- :param category_labels: (dict, optional) Custom labels for category values.
328
- Example: {0: "Female", 1: "Male"} or {"low": "Low Education", "high": "High Education"}.
329
- If not provided, will use original values or auto-generate readable labels.
339
+
340
+ **New API parameters (recommended):**
341
+ :param group_by_column: (str, optional) Column name from seqdata.data to group by.
342
+ Use this when grouping information is already in your data.
343
+ Example: "Cluster", "sex", "education"
344
+ :param group_dataframe: (pd.DataFrame, optional) Separate dataframe containing grouping information.
345
+ Use this when grouping info is in a separate table (e.g., clustering results).
346
+ Must contain ID column and grouping column.
347
+ :param group_column_name: (str, optional) Name of the grouping column in group_dataframe.
348
+ Required when using group_dataframe.
349
+ :param group_labels: (dict, optional) Custom labels for group values.
350
+ Example: {1: "Late Family Formation", 2: "Early Partnership"}
351
+ Maps original values to display labels.
352
+
330
353
  :param sort_by: Sorting method for sequences within groups:
331
354
  - 'unsorted' or 'none': Keep original order (R TraMineR default)
332
355
  - 'lexicographic': Sort sequences lexicographically
@@ -392,45 +415,45 @@ def plot_sequence_index(seqdata: SequenceData,
392
415
 
393
416
  actual_figsize = style_sizes[plot_style]
394
417
 
395
- # Handle the new simplified API: show_by_category
396
- if show_by_category is not None:
418
+ # Handle the simplified API: group_by_column
419
+ if group_by_column is not None:
397
420
  # Validate that the column exists in the original data
398
- if show_by_category not in seqdata.data.columns:
421
+ if group_by_column not in seqdata.data.columns:
399
422
  available_cols = [col for col in seqdata.data.columns if col not in seqdata.time and col != seqdata.id_col]
400
423
  raise ValueError(
401
- f"Column '{show_by_category}' not found in the data. "
424
+ f"Column '{group_by_column}' not found in the data. "
402
425
  f"Available columns for grouping: {available_cols}"
403
426
  )
404
427
 
405
- # Automatically create id_group_df and categories from the simplified API
406
- id_group_df = seqdata.data[[seqdata.id_col, show_by_category]].copy()
407
- id_group_df.columns = ['Entity ID', 'Category']
408
- categories = 'Category'
428
+ # Automatically create group_dataframe and group_column_name from the simplified API
429
+ group_dataframe = seqdata.data[[seqdata.id_col, group_by_column]].copy()
430
+ group_dataframe.columns = ['Entity ID', 'Category']
431
+ group_column_name = 'Category'
409
432
 
410
- # Handle category labels - flexible and user-controllable
411
- unique_values = seqdata.data[show_by_category].unique()
433
+ # Handle group labels - flexible and user-controllable
434
+ unique_values = seqdata.data[group_by_column].unique()
412
435
 
413
- if category_labels is not None:
436
+ if group_labels is not None:
414
437
  # User provided custom labels - use them
415
- missing_keys = set(unique_values) - set(category_labels.keys())
438
+ missing_keys = set(unique_values) - set(group_labels.keys())
416
439
  if missing_keys:
417
440
  raise ValueError(
418
- f"category_labels missing mappings for values: {missing_keys}. "
419
- f"Please provide labels for all unique values in '{show_by_category}': {sorted(unique_values)}"
441
+ f"group_labels missing mappings for values: {missing_keys}. "
442
+ f"Please provide labels for all unique values in '{group_by_column}': {sorted(unique_values)}"
420
443
  )
421
- id_group_df['Category'] = id_group_df['Category'].map(category_labels)
444
+ group_dataframe['Category'] = group_dataframe['Category'].map(group_labels)
422
445
  else:
423
446
  # No custom labels provided - use smart defaults
424
447
  if all(isinstance(v, (int, float, np.integer, np.floating)) and not pd.isna(v) for v in unique_values):
425
- # Numeric values - keep as is (user can provide category_labels if they want custom names)
448
+ # Numeric values - keep as is (user can provide group_labels if they want custom names)
426
449
  pass
427
450
  # For string/categorical values, keep original values
428
451
  # This handles cases where users already have meaningful labels like "Male"/"Female"
429
452
 
430
- print(f"[>] Creating grouped plots by '{show_by_category}' with {len(unique_values)} categories")
453
+ print(f"[>] Creating grouped plots by '{group_by_column}' with {len(unique_values)} categories")
431
454
 
432
455
  # If no grouping information, create a single plot
433
- if id_group_df is None or categories is None:
456
+ if group_dataframe is None or group_column_name is None:
434
457
  return _sequence_index_plot_single(seqdata, sort_by, sort_by_weight, weights, actual_figsize, plot_style, title, xlabel, ylabel, save_as, dpi, fontsize, include_legend, sequence_selection, n_sequences, show_sequence_ids)
435
458
 
436
459
  # Process weights
@@ -443,21 +466,21 @@ def plot_sequence_index(seqdata: SequenceData,
443
466
  raise ValueError("Length of weights must equal number of sequences.")
444
467
 
445
468
  # Ensure ID columns match (convert if needed)
446
- id_col_name = "Entity ID" if "Entity ID" in id_group_df.columns else id_group_df.columns[0]
469
+ id_col_name = "Entity ID" if "Entity ID" in group_dataframe.columns else group_dataframe.columns[0]
447
470
 
448
471
  # Get unique groups and sort them based on user preference
449
472
  if group_order:
450
473
  # Use manually specified order, filter out non-existing groups
451
- groups = [g for g in group_order if g in id_group_df[categories].unique()]
452
- missing_groups = [g for g in id_group_df[categories].unique() if g not in group_order]
474
+ groups = [g for g in group_order if g in group_dataframe[group_column_name].unique()]
475
+ missing_groups = [g for g in group_dataframe[group_column_name].unique() if g not in group_order]
453
476
  if missing_groups:
454
477
  print(f"[Warning] Groups not in group_order will be excluded: {missing_groups}")
455
478
  elif sort_groups == 'numeric' or sort_groups == 'auto':
456
- groups = smart_sort_groups(id_group_df[categories].unique())
479
+ groups = smart_sort_groups(group_dataframe[group_column_name].unique())
457
480
  elif sort_groups == 'alpha':
458
- groups = sorted(id_group_df[categories].unique())
481
+ groups = sorted(group_dataframe[group_column_name].unique())
459
482
  elif sort_groups == 'none':
460
- groups = list(id_group_df[categories].unique())
483
+ groups = list(group_dataframe[group_column_name].unique())
461
484
  else:
462
485
  raise ValueError(f"Invalid sort_groups value: {sort_groups}. Use 'auto', 'numeric', 'alpha', or 'none'.")
463
486
 
@@ -477,7 +500,7 @@ def plot_sequence_index(seqdata: SequenceData,
477
500
  # Create a plot for each group
478
501
  for i, group in enumerate(groups):
479
502
  # Get IDs for this group
480
- group_ids = id_group_df[id_group_df[categories] == group][id_col_name].values
503
+ group_ids = group_dataframe[group_dataframe[group_column_name] == group][id_col_name].values
481
504
 
482
505
  # Match IDs with sequence data
483
506
  mask = np.isin(seqdata.ids, group_ids)
@@ -41,10 +41,12 @@ def smart_sort_groups(groups):
41
41
 
42
42
 
43
43
  def plot_state_distribution(seqdata: SequenceData,
44
- show_by_category=None,
45
- category_labels=None,
46
- id_group_df=None,
47
- categories=None,
44
+ # Grouping parameters
45
+ group_by_column=None,
46
+ group_dataframe=None,
47
+ group_column_name=None,
48
+ group_labels=None,
49
+ # Other parameters
48
50
  weights="auto",
49
51
  figsize=(12, 7),
50
52
  plot_style="standard",
@@ -67,13 +69,33 @@ def plot_state_distribution(seqdata: SequenceData,
67
69
  Creates state distribution plots for different groups, showing how state
68
70
  prevalence changes over time within each group.
69
71
 
72
+ **Two API modes for grouping:**
73
+
74
+ 1. **Simplified API** (when grouping info is already in the data):
75
+ ```python
76
+ plot_state_distribution(seqdata, group_by_column="Cluster", group_labels=cluster_labels)
77
+ ```
78
+
79
+ 2. **Complete API** (when grouping info is in a separate dataframe):
80
+ ```python
81
+ plot_state_distribution(seqdata, group_dataframe=membership_df,
82
+ group_column_name="Cluster", group_labels=cluster_labels)
83
+ ```
84
+
70
85
  :param seqdata: (SequenceData) A SequenceData object containing sequences
71
- :param show_by_category: (str, optional) Simple way to create grouped plots.
72
- Specify the column name from the original data (e.g., "sex", "education").
73
- This will automatically create separate plots for each category.
74
- :param category_labels: (dict, optional) Custom labels for category values.
75
- Example: {0: "Female", 1: "Male"} or {"low": "Low Education", "high": "High Education"}.
76
- If not provided, will use original values or auto-generate readable labels.
86
+
87
+ **Grouping parameters:**
88
+ :param group_by_column: (str, optional) Column name from seqdata.data to group by.
89
+ Use this when grouping information is already in your data.
90
+ Example: "Cluster", "sex", "education"
91
+ :param group_dataframe: (pd.DataFrame, optional) Separate dataframe containing grouping information.
92
+ Use this when grouping info is in a separate table (e.g., clustering results).
93
+ Must contain ID column and grouping column.
94
+ :param group_column_name: (str, optional) Name of the grouping column in group_dataframe.
95
+ Required when using group_dataframe.
96
+ :param group_labels: (dict, optional) Custom labels for group values.
97
+ Example: {1: "Late Family Formation", 2: "Early Partnership"}
98
+ Maps original values to display labels.
77
99
  :param weights: (np.ndarray or "auto") Weights for sequences. If "auto", uses seqdata.weights if available
78
100
  :param figsize: (tuple) Size of the figure (only used when plot_style="custom")
79
101
  :param plot_style: Plot aspect style:
@@ -122,46 +144,45 @@ def plot_state_distribution(seqdata: SequenceData,
122
144
 
123
145
  actual_figsize = style_sizes[plot_style]
124
146
 
125
- # Handle the new simplified API: show_by_category
126
- if show_by_category is not None:
127
-
147
+ # Handle the simplified API: group_by_column
148
+ if group_by_column is not None:
128
149
  # Validate that the column exists in the original data
129
- if show_by_category not in seqdata.data.columns:
150
+ if group_by_column not in seqdata.data.columns:
130
151
  available_cols = [col for col in seqdata.data.columns if col not in seqdata.time and col != seqdata.id_col]
131
152
  raise ValueError(
132
- f"Column '{show_by_category}' not found in the data. "
153
+ f"Column '{group_by_column}' not found in the data. "
133
154
  f"Available columns for grouping: {available_cols}"
134
155
  )
135
156
 
136
- # Automatically create id_group_df and categories from the simplified API
137
- id_group_df = seqdata.data[[seqdata.id_col, show_by_category]].copy()
138
- id_group_df.columns = ['Entity ID', 'Category']
139
- categories = 'Category'
157
+ # Automatically create group_dataframe and group_column_name from the simplified API
158
+ group_dataframe = seqdata.data[[seqdata.id_col, group_by_column]].copy()
159
+ group_dataframe.columns = ['Entity ID', 'Category']
160
+ group_column_name = 'Category'
140
161
 
141
- # Handle category labels - flexible and user-controllable
142
- unique_values = seqdata.data[show_by_category].unique()
162
+ # Handle group labels - flexible and user-controllable
163
+ unique_values = seqdata.data[group_by_column].unique()
143
164
 
144
- if category_labels is not None:
165
+ if group_labels is not None:
145
166
  # User provided custom labels - use them
146
- missing_keys = set(unique_values) - set(category_labels.keys())
167
+ missing_keys = set(unique_values) - set(group_labels.keys())
147
168
  if missing_keys:
148
169
  raise ValueError(
149
- f"category_labels missing mappings for values: {missing_keys}. "
150
- f"Please provide labels for all unique values in '{show_by_category}': {sorted(unique_values)}"
170
+ f"group_labels missing mappings for values: {missing_keys}. "
171
+ f"Please provide labels for all unique values in '{group_by_column}': {sorted(unique_values)}"
151
172
  )
152
- id_group_df['Category'] = id_group_df['Category'].map(category_labels)
173
+ group_dataframe['Category'] = group_dataframe['Category'].map(group_labels)
153
174
  else:
154
175
  # No custom labels provided - use smart defaults
155
176
  if all(isinstance(v, (int, float, np.integer, np.floating)) and not pd.isna(v) for v in unique_values):
156
- # Numeric values - keep as is (user can provide category_labels if they want custom names)
177
+ # Numeric values - keep as is (user can provide group_labels if they want custom names)
157
178
  pass
158
179
  # For string/categorical values, keep original values
159
180
  # This handles cases where users already have meaningful labels like "Male"/"Female"
160
181
 
161
- print(f"[>] Creating grouped plots by '{show_by_category}' with {len(unique_values)} categories")
182
+ print(f"[>] Creating grouped plots by '{group_by_column}' with {len(unique_values)} categories")
162
183
 
163
184
  # If no grouping information, create a single plot
164
- if id_group_df is None or categories is None:
185
+ if group_dataframe is None or group_column_name is None:
165
186
  return _plot_state_distribution_single(
166
187
  seqdata=seqdata, weights=weights, figsize=actual_figsize,
167
188
  plot_style=plot_style, title=title, xlabel=xlabel, ylabel=ylabel,
@@ -179,21 +200,21 @@ def plot_state_distribution(seqdata: SequenceData,
179
200
  raise ValueError("Length of weights must equal number of sequences.")
180
201
 
181
202
  # Ensure ID columns match (convert if needed)
182
- id_col_name = "Entity ID" if "Entity ID" in id_group_df.columns else id_group_df.columns[0]
203
+ id_col_name = "Entity ID" if "Entity ID" in group_dataframe.columns else group_dataframe.columns[0]
183
204
 
184
205
  # Get unique groups and sort them based on user preference
185
206
  if group_order:
186
207
  # Use manually specified order, filter out non-existing groups
187
- groups = [g for g in group_order if g in id_group_df[categories].unique()]
188
- missing_groups = [g for g in id_group_df[categories].unique() if g not in group_order]
208
+ groups = [g for g in group_order if g in group_dataframe[group_column_name].unique()]
209
+ missing_groups = [g for g in group_dataframe[group_column_name].unique() if g not in group_order]
189
210
  if missing_groups:
190
211
  print(f"[Warning] Groups not in group_order will be excluded: {missing_groups}")
191
212
  elif sort_groups == 'numeric' or sort_groups == 'auto':
192
- groups = smart_sort_groups(id_group_df[categories].unique())
213
+ groups = smart_sort_groups(group_dataframe[group_column_name].unique())
193
214
  elif sort_groups == 'alpha':
194
- groups = sorted(id_group_df[categories].unique())
215
+ groups = sorted(group_dataframe[group_column_name].unique())
195
216
  elif sort_groups == 'none':
196
- groups = list(id_group_df[categories].unique())
217
+ groups = list(group_dataframe[group_column_name].unique())
197
218
  else:
198
219
  raise ValueError(f"Invalid sort_groups value: {sort_groups}. Use 'auto', 'numeric', 'alpha', or 'none'.")
199
220
 
@@ -216,7 +237,7 @@ def plot_state_distribution(seqdata: SequenceData,
216
237
  # Process each group
217
238
  for i, group in enumerate(groups):
218
239
  # Get IDs for this group
219
- group_ids = id_group_df[id_group_df[categories] == group][id_col_name].values
240
+ group_ids = group_dataframe[group_dataframe[group_column_name] == group][id_col_name].values
220
241
 
221
242
  # Match IDs with sequence data
222
243
  mask = np.isin(seqdata.ids, group_ids)
@@ -1,5 +1,5 @@
1
1
  """
2
- @Author : Yuqi Liang 梁彧祺
2
+ @Author : Yuqi Liang 梁彧祺, Sebastian Daza
3
3
  @File : plot_transition_matrix.py
4
4
  @Time : 13/02/2025 12:39
5
5
  @Desc :
@@ -32,12 +32,12 @@ def compute_transition_matrix(seqdata: SequenceData, with_missing: bool = False,
32
32
  # Process weights
33
33
  if isinstance(weights, str) and weights == "auto":
34
34
  weights = getattr(seqdata, "weights", None)
35
-
35
+
36
36
  if weights is not None:
37
37
  weights = np.asarray(weights, dtype=float).reshape(-1)
38
38
  if len(weights) != len(seqdata.values):
39
39
  raise ValueError("Length of weights must equal number of sequences.")
40
-
40
+
41
41
  num_states = len(seqdata.states)
42
42
  A = seqdata.to_dataframe().to_numpy()
43
43
  n, T = A.shape
@@ -52,19 +52,19 @@ def compute_transition_matrix(seqdata: SequenceData, with_missing: bool = False,
52
52
  nxt = A[:, 1:].flatten()
53
53
  w_pair = np.repeat(w, T-1) # Each sequence weight replicated (T-1) times
54
54
 
55
- # Filter valid transitions
56
- valid = (current >= 0) & (current < num_states) & (nxt >= 0) & (nxt < num_states)
55
+ # Filter valid transitions (states are encoded as 1, 2, 3, ..., num_states)
56
+ valid = (current >= 1) & (current <= num_states) & (nxt >= 1) & (nxt <= num_states)
57
57
  current, nxt, w_pair = current[valid], nxt[valid], w_pair[valid]
58
58
 
59
59
  # Compute weighted transition counts
60
60
  # Create mapping from state codes to matrix indices
61
61
  state_codes = sorted(set(current) | set(nxt))
62
62
  code_to_idx = {code: idx for idx, code in enumerate(state_codes)}
63
-
63
+
64
64
  # Use only the actual number of unique states for matrix size
65
65
  actual_num_states = len(state_codes)
66
66
  trans = np.zeros((actual_num_states, actual_num_states), dtype=float)
67
-
67
+
68
68
  for c, n2, ww in zip(current, nxt, w_pair):
69
69
  trans[code_to_idx[int(c)], code_to_idx[int(n2)]] += ww
70
70
 
@@ -75,7 +75,7 @@ def compute_transition_matrix(seqdata: SequenceData, with_missing: bool = False,
75
75
 
76
76
  # Create a properly sized matrix with correct mapping to original states
77
77
  final_matrix = np.zeros((num_states, num_states), dtype=float)
78
-
78
+
79
79
  # Map back to the original state positions
80
80
  for i, from_code in enumerate(state_codes):
81
81
  for j, to_code in enumerate(state_codes):
@@ -92,7 +92,7 @@ def print_transition_matrix(seqdata: SequenceData, transition_rates: np.ndarray)
92
92
  :param seqdata: SequenceData object containing state information
93
93
  :param transition_rates: numpy array containing transition rates
94
94
  """
95
- state_labels = seqdata.states
95
+ state_labels = seqdata.labels
96
96
 
97
97
  # Calculate max width needed for state labels
98
98
  max_label_width = max(len(s) for s in state_labels) + 3 # +3 for arrow
@@ -127,45 +127,45 @@ def print_transition_matrix(seqdata: SequenceData, transition_rates: np.ndarray)
127
127
 
128
128
  def plot_transition_matrix(seqdata: SequenceData,
129
129
  weights="auto",
130
- title: Optional[str] = None,
130
+ title: str = "State Transition Rate Matrix",
131
131
  fontsize: int = 12,
132
132
  save_as: Optional[str] = None,
133
- dpi: int = 200) -> None:
133
+ dpi: int = 200,
134
+ format: str = "%.2f") -> None:
134
135
  """
135
136
  Plot state transition rate matrix as a heatmap.
136
137
 
137
138
  :param seqdata: SequenceData object containing sequence information
138
139
  :param weights: (np.ndarray or "auto") Weights for sequences. If "auto", uses seqdata.weights if available
139
140
  :param title: optional title for the plot
141
+ :param fontsize: base font size for labels
140
142
  :param save_as: optional file path to save the plot
141
143
  :param dpi: resolution of the saved plot
144
+ :param format: format string for annotations (default "%.2f")
142
145
  """
146
+
143
147
  # Compute transition matrix with weights
144
148
  transition_matrix = compute_transition_matrix(seqdata, weights=weights)
145
149
  transition_matrix = np.array(transition_matrix)
146
150
 
147
- # Create upper triangle mask (show diagonal)
148
- mask = np.triu(np.ones(transition_matrix.shape, dtype=bool), k=1)
149
-
150
151
  # Set figure size
151
152
  plt.figure(figsize=(12, 10))
152
153
 
153
154
  # Use fresh color scheme
154
155
  cmap = sns.color_palette("light:#5A9", as_cmap=True)
155
156
 
156
- # Generate heatmap
157
+ # Generate heatmap using pre-formatted annotation strings
157
158
  ax = sns.heatmap(
158
159
  transition_matrix,
159
- mask=mask,
160
- annot=True,
161
- fmt=".2f",
160
+ fmt=format,
162
161
  cmap=cmap,
163
162
  xticklabels=seqdata.labels,
164
163
  yticklabels=seqdata.labels,
165
164
  linewidths=0.5,
166
165
  linecolor="gray",
167
166
  cbar_kws={"shrink": 0.8},
168
- square=True
167
+ square=True,
168
+ annot_kws={"fontsize": fontsize - 2}
169
169
  )
170
170
 
171
171
  # Show all the borderlines
@@ -175,7 +175,7 @@ def plot_transition_matrix(seqdata: SequenceData,
175
175
  # Adjust format
176
176
  if title:
177
177
  show_plot_title(plt.gca(), title, show=True, fontsize=fontsize+2, fontweight='bold', pad=20)
178
- # plt.title("State Transition Rate Matrix", fontsize=14, fontweight='bold', pad=20)
178
+
179
179
  plt.xlabel("State at t + 1", fontsize=fontsize, labelpad=10)
180
180
  plt.ylabel("State at t", fontsize=fontsize, labelpad=10)
181
181
 
@@ -186,5 +186,4 @@ def plot_transition_matrix(seqdata: SequenceData,
186
186
  # Adjust layout
187
187
  plt.tight_layout()
188
188
 
189
- save_and_show_results(save_as, dpi=200)
190
-
189
+ save_and_show_results(save_as, dpi=dpi)
@@ -0,0 +1,35 @@
1
+ """
2
+ @Author : Yuqi Liang 梁彧祺
3
+ @File : __init__.py
4
+ @Time : 30/09/2025 23:34
5
+ @Desc : Event History Analysis module for sequence analysis
6
+ """
7
+
8
+ from .sequence_analysis_multi_state_model import (
9
+ SAMM,
10
+ sequence_analysis_multi_state_model,
11
+ plot_samm,
12
+ seqsammseq,
13
+ set_typology,
14
+ seqsammeha,
15
+ # Keep old names for backward compatibility
16
+ seqsamm
17
+ )
18
+
19
+ from .sequence_history_analysis import (
20
+ seqsha,
21
+ person_level_to_person_period
22
+ )
23
+
24
+ __all__ = [
25
+ 'SAMM',
26
+ 'sequence_analysis_multi_state_model',
27
+ 'plot_samm',
28
+ 'seqsammseq',
29
+ 'set_typology',
30
+ 'seqsammeha',
31
+ 'seqsha',
32
+ 'person_level_to_person_period',
33
+ # Keep old names for backward compatibility
34
+ 'seqsamm'
35
+ ]