sequenzo 0.1.31__cp310-cp310-macosx_10_9_x86_64.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.
- _sequenzo_fastcluster.cpython-310-darwin.so +0 -0
- sequenzo/__init__.py +349 -0
- sequenzo/big_data/__init__.py +12 -0
- sequenzo/big_data/clara/__init__.py +26 -0
- sequenzo/big_data/clara/clara.py +476 -0
- sequenzo/big_data/clara/utils/__init__.py +27 -0
- sequenzo/big_data/clara/utils/aggregatecases.py +92 -0
- sequenzo/big_data/clara/utils/davies_bouldin.py +91 -0
- sequenzo/big_data/clara/utils/get_weighted_diss.cpython-310-darwin.so +0 -0
- sequenzo/big_data/clara/utils/wfcmdd.py +205 -0
- sequenzo/big_data/clara/visualization.py +88 -0
- sequenzo/clustering/KMedoids.py +178 -0
- sequenzo/clustering/__init__.py +30 -0
- sequenzo/clustering/clustering_c_code.cpython-310-darwin.so +0 -0
- sequenzo/clustering/hierarchical_clustering.py +1256 -0
- sequenzo/clustering/sequenzo_fastcluster/fastcluster.py +495 -0
- sequenzo/clustering/sequenzo_fastcluster/src/fastcluster.cpp +1877 -0
- sequenzo/clustering/sequenzo_fastcluster/src/fastcluster_python.cpp +1264 -0
- sequenzo/clustering/src/KMedoid.cpp +263 -0
- sequenzo/clustering/src/PAM.cpp +237 -0
- sequenzo/clustering/src/PAMonce.cpp +265 -0
- sequenzo/clustering/src/cluster_quality.cpp +496 -0
- sequenzo/clustering/src/cluster_quality.h +128 -0
- sequenzo/clustering/src/cluster_quality_backup.cpp +570 -0
- sequenzo/clustering/src/module.cpp +228 -0
- sequenzo/clustering/src/weightedinertia.cpp +111 -0
- sequenzo/clustering/utils/__init__.py +27 -0
- sequenzo/clustering/utils/disscenter.py +122 -0
- sequenzo/data_preprocessing/__init__.py +22 -0
- sequenzo/data_preprocessing/helpers.py +303 -0
- sequenzo/datasets/__init__.py +41 -0
- sequenzo/datasets/biofam.csv +2001 -0
- sequenzo/datasets/biofam_child_domain.csv +2001 -0
- sequenzo/datasets/biofam_left_domain.csv +2001 -0
- sequenzo/datasets/biofam_married_domain.csv +2001 -0
- sequenzo/datasets/chinese_colonial_territories.csv +12 -0
- sequenzo/datasets/country_co2_emissions.csv +194 -0
- sequenzo/datasets/country_co2_emissions_global_deciles.csv +195 -0
- sequenzo/datasets/country_co2_emissions_global_quintiles.csv +195 -0
- sequenzo/datasets/country_co2_emissions_local_deciles.csv +195 -0
- sequenzo/datasets/country_co2_emissions_local_quintiles.csv +195 -0
- sequenzo/datasets/country_gdp_per_capita.csv +194 -0
- sequenzo/datasets/dyadic_children.csv +61 -0
- sequenzo/datasets/dyadic_parents.csv +61 -0
- sequenzo/datasets/mvad.csv +713 -0
- sequenzo/datasets/pairfam_activity_by_month.csv +1028 -0
- sequenzo/datasets/pairfam_activity_by_year.csv +1028 -0
- sequenzo/datasets/pairfam_family_by_month.csv +1028 -0
- sequenzo/datasets/pairfam_family_by_year.csv +1028 -0
- sequenzo/datasets/political_science_aid_shock.csv +166 -0
- sequenzo/datasets/political_science_donor_fragmentation.csv +157 -0
- sequenzo/define_sequence_data.py +1400 -0
- sequenzo/dissimilarity_measures/__init__.py +31 -0
- sequenzo/dissimilarity_measures/c_code.cpython-310-darwin.so +0 -0
- sequenzo/dissimilarity_measures/get_distance_matrix.py +762 -0
- sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +246 -0
- sequenzo/dissimilarity_measures/src/DHDdistance.cpp +148 -0
- sequenzo/dissimilarity_measures/src/LCPdistance.cpp +114 -0
- sequenzo/dissimilarity_measures/src/LCPspellDistance.cpp +215 -0
- sequenzo/dissimilarity_measures/src/OMdistance.cpp +247 -0
- sequenzo/dissimilarity_measures/src/OMspellDistance.cpp +281 -0
- sequenzo/dissimilarity_measures/src/__init__.py +0 -0
- sequenzo/dissimilarity_measures/src/dist2matrix.cpp +63 -0
- sequenzo/dissimilarity_measures/src/dp_utils.h +160 -0
- sequenzo/dissimilarity_measures/src/module.cpp +40 -0
- sequenzo/dissimilarity_measures/src/setup.py +30 -0
- sequenzo/dissimilarity_measures/src/utils.h +25 -0
- sequenzo/dissimilarity_measures/src/xsimd/.github/cmake-test/main.cpp +6 -0
- sequenzo/dissimilarity_measures/src/xsimd/benchmark/main.cpp +159 -0
- sequenzo/dissimilarity_measures/src/xsimd/benchmark/xsimd_benchmark.hpp +565 -0
- sequenzo/dissimilarity_measures/src/xsimd/docs/source/conf.py +37 -0
- sequenzo/dissimilarity_measures/src/xsimd/examples/mandelbrot.cpp +330 -0
- sequenzo/dissimilarity_measures/src/xsimd/examples/pico_bench.hpp +246 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_arithmetic.hpp +266 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_complex.hpp +112 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_details.hpp +323 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_logical.hpp +218 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_math.hpp +2583 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_memory.hpp +880 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_rounding.hpp +72 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_swizzle.hpp +174 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_trigo.hpp +978 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx.hpp +1924 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx2.hpp +1144 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512bw.hpp +656 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512cd.hpp +28 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512dq.hpp +244 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512er.hpp +20 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512f.hpp +2650 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512ifma.hpp +20 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512pf.hpp +20 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi.hpp +77 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi2.hpp +131 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512bw.hpp +20 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp +20 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avxvnni.hpp +20 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common.hpp +24 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common_fwd.hpp +77 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_constants.hpp +393 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_emulated.hpp +788 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx.hpp +93 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx2.hpp +46 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_sse.hpp +97 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma4.hpp +92 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_i8mm_neon64.hpp +17 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_isa.hpp +142 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon.hpp +3142 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon64.hpp +1543 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_rvv.hpp +1513 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_scalar.hpp +1260 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse2.hpp +2024 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse3.hpp +67 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_1.hpp +339 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_2.hpp +44 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_ssse3.hpp +186 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sve.hpp +1155 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_vsx.hpp +892 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_wasm.hpp +1780 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_arch.hpp +240 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_config.hpp +484 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_cpuid.hpp +269 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_inline.hpp +27 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/math/xsimd_rem_pio2.hpp +719 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_aligned_allocator.hpp +349 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_alignment.hpp +91 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_all_registers.hpp +55 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_api.hpp +2765 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx2_register.hpp +44 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512bw_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512cd_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512dq_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512er_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512f_register.hpp +77 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512ifma_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512pf_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi2_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi_register.hpp +51 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512bw_register.hpp +54 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp +53 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx_register.hpp +64 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avxvnni_register.hpp +44 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch.hpp +1524 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch_constant.hpp +300 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_common_arch.hpp +47 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_emulated_register.hpp +80 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx2_register.hpp +50 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx_register.hpp +50 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_sse_register.hpp +50 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma4_register.hpp +50 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_i8mm_neon64_register.hpp +55 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon64_register.hpp +55 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon_register.hpp +154 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_register.hpp +94 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_rvv_register.hpp +506 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse2_register.hpp +59 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse3_register.hpp +49 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_1_register.hpp +48 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_2_register.hpp +48 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_ssse3_register.hpp +48 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sve_register.hpp +156 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_traits.hpp +337 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_utils.hpp +536 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_vsx_register.hpp +77 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_wasm_register.hpp +59 -0
- sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/xsimd.hpp +75 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/architectures/dummy.cpp +7 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set.cpp +13 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean.cpp +24 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_aligned.cpp +25 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_arch_independent.cpp +28 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_tag_dispatch.cpp +25 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_abstract_batches.cpp +7 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_parametric_batches.cpp +8 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum.hpp +31 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_avx2.cpp +3 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_sse2.cpp +3 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/doc/writing_vectorized_code.cpp +11 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/main.cpp +31 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_api.cpp +230 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_arch.cpp +217 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_basic_math.cpp +183 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch.cpp +1049 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_bool.cpp +508 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_cast.cpp +409 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_complex.cpp +712 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_constant.cpp +286 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_float.cpp +141 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_int.cpp +365 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_manip.cpp +308 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_bitwise_cast.cpp +222 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_exponential.cpp +226 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_hyperbolic.cpp +183 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_power.cpp +265 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_trigonometric.cpp +236 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_conversion.cpp +248 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_custom_default_arch.cpp +28 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_error_gamma.cpp +170 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_explicit_batch_instantiation.cpp +32 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_exponential.cpp +202 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_extract_pair.cpp +92 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_fp_manipulation.cpp +77 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_gnu_source.cpp +30 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_hyperbolic.cpp +167 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_load_store.cpp +304 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_memory.cpp +61 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_poly_evaluation.cpp +64 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_power.cpp +184 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_rounding.cpp +199 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_select.cpp +101 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_shuffle.cpp +760 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.cpp +4 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.hpp +34 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_traits.cpp +172 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_trigonometric.cpp +208 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_utils.hpp +611 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_wasm/test_wasm_playwright.py +123 -0
- sequenzo/dissimilarity_measures/src/xsimd/test/test_xsimd_api.cpp +1460 -0
- sequenzo/dissimilarity_measures/utils/__init__.py +16 -0
- sequenzo/dissimilarity_measures/utils/get_LCP_length_for_2_seq.py +44 -0
- sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.cpython-310-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqconc.cpython-310-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqdss.cpython-310-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqdur.cpython-310-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqlength.cpython-310-darwin.so +0 -0
- sequenzo/multidomain/__init__.py +23 -0
- sequenzo/multidomain/association_between_domains.py +311 -0
- sequenzo/multidomain/cat.py +597 -0
- sequenzo/multidomain/combt.py +519 -0
- sequenzo/multidomain/dat.py +81 -0
- sequenzo/multidomain/idcd.py +139 -0
- sequenzo/multidomain/linked_polyad.py +292 -0
- sequenzo/openmp_setup.py +233 -0
- sequenzo/prefix_tree/__init__.py +62 -0
- sequenzo/prefix_tree/hub.py +114 -0
- sequenzo/prefix_tree/individual_level_indicators.py +1321 -0
- sequenzo/prefix_tree/spell_individual_level_indicators.py +580 -0
- sequenzo/prefix_tree/spell_level_indicators.py +297 -0
- sequenzo/prefix_tree/system_level_indicators.py +544 -0
- sequenzo/prefix_tree/utils.py +54 -0
- sequenzo/seqhmm/__init__.py +95 -0
- sequenzo/seqhmm/advanced_optimization.py +305 -0
- sequenzo/seqhmm/bootstrap.py +411 -0
- sequenzo/seqhmm/build_hmm.py +142 -0
- sequenzo/seqhmm/build_mhmm.py +136 -0
- sequenzo/seqhmm/build_nhmm.py +121 -0
- sequenzo/seqhmm/fit_mhmm.py +62 -0
- sequenzo/seqhmm/fit_model.py +61 -0
- sequenzo/seqhmm/fit_nhmm.py +76 -0
- sequenzo/seqhmm/formulas.py +289 -0
- sequenzo/seqhmm/forward_backward_nhmm.py +276 -0
- sequenzo/seqhmm/gradients_nhmm.py +306 -0
- sequenzo/seqhmm/hmm.py +291 -0
- sequenzo/seqhmm/mhmm.py +314 -0
- sequenzo/seqhmm/model_comparison.py +238 -0
- sequenzo/seqhmm/multichannel_em.py +282 -0
- sequenzo/seqhmm/multichannel_utils.py +138 -0
- sequenzo/seqhmm/nhmm.py +270 -0
- sequenzo/seqhmm/nhmm_utils.py +191 -0
- sequenzo/seqhmm/predict.py +137 -0
- sequenzo/seqhmm/predict_mhmm.py +142 -0
- sequenzo/seqhmm/simulate.py +878 -0
- sequenzo/seqhmm/utils.py +218 -0
- sequenzo/seqhmm/visualization.py +910 -0
- sequenzo/sequence_characteristics/__init__.py +40 -0
- sequenzo/sequence_characteristics/complexity_index.py +49 -0
- sequenzo/sequence_characteristics/overall_cross_sectional_entropy.py +220 -0
- sequenzo/sequence_characteristics/plot_characteristics.py +593 -0
- sequenzo/sequence_characteristics/simple_characteristics.py +311 -0
- sequenzo/sequence_characteristics/state_frequencies_and_entropy_per_sequence.py +39 -0
- sequenzo/sequence_characteristics/turbulence.py +155 -0
- sequenzo/sequence_characteristics/variance_of_spell_durations.py +86 -0
- sequenzo/sequence_characteristics/within_sequence_entropy.py +43 -0
- sequenzo/suffix_tree/__init__.py +66 -0
- sequenzo/suffix_tree/hub.py +114 -0
- sequenzo/suffix_tree/individual_level_indicators.py +1679 -0
- sequenzo/suffix_tree/spell_individual_level_indicators.py +493 -0
- sequenzo/suffix_tree/spell_level_indicators.py +248 -0
- sequenzo/suffix_tree/system_level_indicators.py +535 -0
- sequenzo/suffix_tree/utils.py +56 -0
- sequenzo/version_check.py +283 -0
- sequenzo/visualization/__init__.py +29 -0
- sequenzo/visualization/plot_mean_time.py +222 -0
- sequenzo/visualization/plot_modal_state.py +276 -0
- sequenzo/visualization/plot_most_frequent_sequences.py +147 -0
- sequenzo/visualization/plot_relative_frequency.py +405 -0
- sequenzo/visualization/plot_sequence_index.py +1175 -0
- sequenzo/visualization/plot_single_medoid.py +153 -0
- sequenzo/visualization/plot_state_distribution.py +651 -0
- sequenzo/visualization/plot_transition_matrix.py +190 -0
- sequenzo/visualization/utils/__init__.py +23 -0
- sequenzo/visualization/utils/utils.py +310 -0
- sequenzo/with_event_history_analysis/__init__.py +35 -0
- sequenzo/with_event_history_analysis/sequence_analysis_multi_state_model.py +850 -0
- sequenzo/with_event_history_analysis/sequence_history_analysis.py +283 -0
- sequenzo-0.1.31.dist-info/METADATA +286 -0
- sequenzo-0.1.31.dist-info/RECORD +299 -0
- sequenzo-0.1.31.dist-info/WHEEL +5 -0
- sequenzo-0.1.31.dist-info/licenses/LICENSE +28 -0
- sequenzo-0.1.31.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@Author : Yuqi Liang 梁彧祺
|
|
3
|
+
@File : advanced_optimization.py
|
|
4
|
+
@Time : 2025-11-23 14:02
|
|
5
|
+
@Desc : Advanced optimization methods for HMM models
|
|
6
|
+
|
|
7
|
+
This module provides advanced optimization methods including:
|
|
8
|
+
- Global optimization (MLSL - Multi-Level Single-Linkage)
|
|
9
|
+
- Local optimization (L-BFGS)
|
|
10
|
+
- Multiple restarts with random initial values
|
|
11
|
+
|
|
12
|
+
This is similar to seqHMM's fit_model() function with global_step and local_step options.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import numpy as np
|
|
16
|
+
from typing import Optional, Dict, List, Callable, Union
|
|
17
|
+
from scipy.optimize import minimize, differential_evolution
|
|
18
|
+
from .hmm import HMM
|
|
19
|
+
from .mhmm import MHMM
|
|
20
|
+
from .nhmm import NHMM
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def fit_model_advanced(
|
|
24
|
+
model: Union[HMM, MHMM, NHMM],
|
|
25
|
+
em_step: bool = True,
|
|
26
|
+
global_step: bool = False,
|
|
27
|
+
local_step: bool = False,
|
|
28
|
+
n_iter: int = 100,
|
|
29
|
+
tol: float = 1e-2,
|
|
30
|
+
n_restarts: int = 0,
|
|
31
|
+
verbose: bool = False,
|
|
32
|
+
random_state: Optional[int] = None
|
|
33
|
+
) -> Union[HMM, MHMM, NHMM]:
|
|
34
|
+
"""
|
|
35
|
+
Fit HMM model using advanced optimization methods.
|
|
36
|
+
|
|
37
|
+
This function provides a three-step optimization approach:
|
|
38
|
+
1. EM algorithm (optional, default True)
|
|
39
|
+
2. Global optimization using MLSL (optional)
|
|
40
|
+
3. Local optimization using L-BFGS (optional)
|
|
41
|
+
|
|
42
|
+
Additionally supports multiple restarts with random initial values.
|
|
43
|
+
|
|
44
|
+
This is similar to seqHMM's fit_model() function with advanced options.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
model: HMM, MHMM, or NHMM model object
|
|
48
|
+
em_step: Whether to use EM algorithm first. Default is True.
|
|
49
|
+
global_step: Whether to use global optimization (MLSL). Default is False.
|
|
50
|
+
local_step: Whether to use local optimization (L-BFGS). Default is False.
|
|
51
|
+
n_iter: Maximum number of iterations for EM/local optimization
|
|
52
|
+
tol: Convergence tolerance
|
|
53
|
+
n_restarts: Number of random restarts. Default is 0.
|
|
54
|
+
verbose: Whether to print progress
|
|
55
|
+
random_state: Random seed for reproducibility
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
Fitted model object
|
|
59
|
+
|
|
60
|
+
Examples:
|
|
61
|
+
>>> from sequenzo.seqhmm import build_hmm, fit_model_advanced
|
|
62
|
+
>>>
|
|
63
|
+
>>> hmm = build_hmm(seq, n_states=4, random_state=42)
|
|
64
|
+
>>>
|
|
65
|
+
>>> # Use all optimization steps
|
|
66
|
+
>>> hmm = fit_model_advanced(
|
|
67
|
+
... hmm,
|
|
68
|
+
... em_step=True,
|
|
69
|
+
... global_step=True,
|
|
70
|
+
... local_step=True,
|
|
71
|
+
... n_restarts=5,
|
|
72
|
+
... verbose=True
|
|
73
|
+
... )
|
|
74
|
+
"""
|
|
75
|
+
rng = np.random.RandomState(random_state)
|
|
76
|
+
|
|
77
|
+
best_model = None
|
|
78
|
+
best_log_lik = -np.inf
|
|
79
|
+
results = []
|
|
80
|
+
|
|
81
|
+
# Determine number of optimization runs (1 + n_restarts)
|
|
82
|
+
n_runs = 1 + n_restarts
|
|
83
|
+
|
|
84
|
+
for run in range(n_runs):
|
|
85
|
+
if verbose:
|
|
86
|
+
print(f"\n{'='*50}")
|
|
87
|
+
print(f"Optimization run {run + 1}/{n_runs}")
|
|
88
|
+
print(f"{'='*50}")
|
|
89
|
+
|
|
90
|
+
# Create a copy of the model for this run
|
|
91
|
+
if run == 0:
|
|
92
|
+
current_model = model
|
|
93
|
+
else:
|
|
94
|
+
# Random restart: create new model with random initial values
|
|
95
|
+
current_model = _create_random_restart(model, rng)
|
|
96
|
+
|
|
97
|
+
# Step 1: EM algorithm
|
|
98
|
+
if em_step:
|
|
99
|
+
if verbose:
|
|
100
|
+
print("\n[Step 1] EM Algorithm...")
|
|
101
|
+
current_model = _em_step(current_model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
102
|
+
|
|
103
|
+
# Step 2: Global optimization
|
|
104
|
+
if global_step:
|
|
105
|
+
if verbose:
|
|
106
|
+
print("\n[Step 2] Global Optimization (MLSL)...")
|
|
107
|
+
current_model = _global_step(current_model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
108
|
+
|
|
109
|
+
# Step 3: Local optimization
|
|
110
|
+
if local_step:
|
|
111
|
+
if verbose:
|
|
112
|
+
print("\n[Step 3] Local Optimization (L-BFGS)...")
|
|
113
|
+
current_model = _local_step(current_model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
114
|
+
|
|
115
|
+
# Store results
|
|
116
|
+
log_lik = current_model.log_likelihood if current_model.log_likelihood is not None else -np.inf
|
|
117
|
+
results.append({
|
|
118
|
+
'run': run,
|
|
119
|
+
'log_likelihood': log_lik,
|
|
120
|
+
'model': current_model
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
# Track best model
|
|
124
|
+
if log_lik > best_log_lik:
|
|
125
|
+
best_log_lik = log_lik
|
|
126
|
+
best_model = current_model
|
|
127
|
+
|
|
128
|
+
if verbose:
|
|
129
|
+
print(f"Run {run + 1} log-likelihood: {log_lik:.4f}")
|
|
130
|
+
|
|
131
|
+
# Return best model
|
|
132
|
+
if verbose:
|
|
133
|
+
print(f"\n{'='*50}")
|
|
134
|
+
print(f"Best log-likelihood: {best_log_lik:.4f}")
|
|
135
|
+
print(f"{'='*50}")
|
|
136
|
+
|
|
137
|
+
return best_model
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def _em_step(
|
|
141
|
+
model: Union[HMM, MHMM, NHMM],
|
|
142
|
+
n_iter: int = 100,
|
|
143
|
+
tol: float = 1e-2,
|
|
144
|
+
verbose: bool = False
|
|
145
|
+
) -> Union[HMM, MHMM, NHMM]:
|
|
146
|
+
"""EM algorithm step."""
|
|
147
|
+
if isinstance(model, HMM):
|
|
148
|
+
from .fit_model import fit_model
|
|
149
|
+
return fit_model(model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
150
|
+
elif isinstance(model, MHMM):
|
|
151
|
+
from .fit_mhmm import fit_mhmm
|
|
152
|
+
return fit_mhmm(model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
153
|
+
elif isinstance(model, NHMM):
|
|
154
|
+
# For NHMM, EM is not directly applicable, skip
|
|
155
|
+
if verbose:
|
|
156
|
+
print(" (EM step skipped for NHMM - using numerical optimization)")
|
|
157
|
+
return model
|
|
158
|
+
else:
|
|
159
|
+
raise ValueError(f"Unknown model type: {type(model)}")
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _global_step(
|
|
163
|
+
model: Union[HMM, MHMM, NHMM],
|
|
164
|
+
n_iter: int = 100,
|
|
165
|
+
tol: float = 1e-4,
|
|
166
|
+
verbose: bool = False
|
|
167
|
+
) -> Union[HMM, MHMM, NHMM]:
|
|
168
|
+
"""
|
|
169
|
+
Global optimization step using Multi-Level Single-Linkage (MLSL) method.
|
|
170
|
+
|
|
171
|
+
MLSL is a global optimization algorithm that uses low-discrepancy sequences
|
|
172
|
+
to generate starting points and performs local optimization from each.
|
|
173
|
+
|
|
174
|
+
For now, we use scipy's differential_evolution as an approximation,
|
|
175
|
+
since scipy doesn't have MLSL. A full implementation would require
|
|
176
|
+
NLOPT library or custom MLSL implementation.
|
|
177
|
+
"""
|
|
178
|
+
if isinstance(model, NHMM):
|
|
179
|
+
# For NHMM, use numerical optimization with multiple starts
|
|
180
|
+
# This is an approximation of MLSL
|
|
181
|
+
from .fit_nhmm import fit_nhmm
|
|
182
|
+
|
|
183
|
+
# Get parameter bounds
|
|
184
|
+
params = np.concatenate([
|
|
185
|
+
model.eta_pi.flatten(),
|
|
186
|
+
model.eta_A.flatten(),
|
|
187
|
+
model.eta_B.flatten()
|
|
188
|
+
])
|
|
189
|
+
|
|
190
|
+
# Create bounds (wider range for global search)
|
|
191
|
+
bounds = [(-5, 5)] * len(params) # Reasonable range for coefficients
|
|
192
|
+
|
|
193
|
+
# Use differential evolution for global optimization
|
|
194
|
+
def objective(params):
|
|
195
|
+
return model._log_likelihood(params)
|
|
196
|
+
|
|
197
|
+
result = differential_evolution(
|
|
198
|
+
objective,
|
|
199
|
+
bounds,
|
|
200
|
+
maxiter=n_iter,
|
|
201
|
+
tol=tol,
|
|
202
|
+
seed=42,
|
|
203
|
+
disp=verbose
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
# Update model parameters
|
|
207
|
+
n_pi = model.n_covariates * model.n_states
|
|
208
|
+
n_A = model.n_covariates * model.n_states * model.n_states
|
|
209
|
+
n_B = model.n_covariates * model.n_states * model.n_symbols
|
|
210
|
+
|
|
211
|
+
model.eta_pi = result.x[:n_pi].reshape(model.n_covariates, model.n_states)
|
|
212
|
+
model.eta_A = result.x[n_pi:n_pi+n_A].reshape(model.n_covariates, model.n_states, model.n_states)
|
|
213
|
+
model.eta_B = result.x[n_pi+n_A:].reshape(model.n_covariates, model.n_states, model.n_symbols)
|
|
214
|
+
|
|
215
|
+
model.log_likelihood = -result.fun
|
|
216
|
+
model.n_iter = result.nit
|
|
217
|
+
model.converged = result.success
|
|
218
|
+
|
|
219
|
+
return model
|
|
220
|
+
|
|
221
|
+
else:
|
|
222
|
+
# For HMM and MHMM, global optimization is less critical
|
|
223
|
+
# since EM usually works well. We can skip or use a simplified version.
|
|
224
|
+
if verbose:
|
|
225
|
+
print(" (Global optimization less critical for HMM/MHMM with EM)")
|
|
226
|
+
return model
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def _local_step(
|
|
230
|
+
model: Union[HMM, MHMM, NHMM],
|
|
231
|
+
n_iter: int = 100,
|
|
232
|
+
tol: float = 1e-8,
|
|
233
|
+
verbose: bool = False
|
|
234
|
+
) -> Union[HMM, MHMM, NHMM]:
|
|
235
|
+
"""
|
|
236
|
+
Local optimization step using L-BFGS method.
|
|
237
|
+
|
|
238
|
+
This refines the solution found by EM or global optimization
|
|
239
|
+
using a high-precision local optimizer.
|
|
240
|
+
"""
|
|
241
|
+
if isinstance(model, NHMM):
|
|
242
|
+
from .fit_nhmm import fit_nhmm
|
|
243
|
+
# Use tighter tolerance for local optimization
|
|
244
|
+
return fit_nhmm(model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
245
|
+
|
|
246
|
+
elif isinstance(model, (HMM, MHMM)):
|
|
247
|
+
# For HMM and MHMM, we can refine using additional EM iterations
|
|
248
|
+
# with tighter tolerance
|
|
249
|
+
return _em_step(model, n_iter=n_iter, tol=tol, verbose=verbose)
|
|
250
|
+
|
|
251
|
+
else:
|
|
252
|
+
raise ValueError(f"Unknown model type: {type(model)}")
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def _create_random_restart(
|
|
256
|
+
model: Union[HMM, MHMM, NHMM],
|
|
257
|
+
rng: np.random.RandomState
|
|
258
|
+
) -> Union[HMM, MHMM, NHMM]:
|
|
259
|
+
"""
|
|
260
|
+
Create a new model with random initial values for restart.
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
model: Original model
|
|
264
|
+
rng: Random number generator
|
|
265
|
+
|
|
266
|
+
Returns:
|
|
267
|
+
New model with random initial parameters
|
|
268
|
+
"""
|
|
269
|
+
if isinstance(model, HMM):
|
|
270
|
+
from .build_hmm import build_hmm
|
|
271
|
+
return build_hmm(
|
|
272
|
+
model.observations,
|
|
273
|
+
n_states=model.n_states,
|
|
274
|
+
random_state=rng.randint(0, 2**31)
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
elif isinstance(model, MHMM):
|
|
278
|
+
from .build_mhmm import build_mhmm
|
|
279
|
+
return build_mhmm(
|
|
280
|
+
model.observations,
|
|
281
|
+
n_clusters=model.n_clusters,
|
|
282
|
+
n_states=model.n_states,
|
|
283
|
+
random_state=rng.randint(0, 2**31)
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
elif isinstance(model, NHMM):
|
|
287
|
+
from .build_nhmm import build_nhmm
|
|
288
|
+
# Randomize coefficients
|
|
289
|
+
eta_pi = rng.randn(model.n_covariates, model.n_states) * 0.1
|
|
290
|
+
eta_A = rng.randn(model.n_covariates, model.n_states, model.n_states) * 0.1
|
|
291
|
+
eta_B = rng.randn(model.n_covariates, model.n_states, model.n_symbols) * 0.1
|
|
292
|
+
|
|
293
|
+
return build_nhmm(
|
|
294
|
+
model.observations,
|
|
295
|
+
n_states=model.n_states,
|
|
296
|
+
X=model.X,
|
|
297
|
+
eta_pi=eta_pi,
|
|
298
|
+
eta_A=eta_A,
|
|
299
|
+
eta_B=eta_B,
|
|
300
|
+
state_names=model.state_names,
|
|
301
|
+
random_state=rng.randint(0, 2**31)
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
else:
|
|
305
|
+
raise ValueError(f"Unknown model type: {type(model)}")
|