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,300 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_BATCH_CONSTANT_HPP
|
|
13
|
+
#define XSIMD_BATCH_CONSTANT_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_batch.hpp"
|
|
16
|
+
#include "./xsimd_utils.hpp"
|
|
17
|
+
|
|
18
|
+
namespace xsimd
|
|
19
|
+
{
|
|
20
|
+
/**
|
|
21
|
+
* @brief batch of boolean constant
|
|
22
|
+
*
|
|
23
|
+
* Abstract representation of a batch of boolean constants.
|
|
24
|
+
*
|
|
25
|
+
* @tparam batch_type the type of the associated batch values.
|
|
26
|
+
* @tparam Values boolean constant represented by this batch
|
|
27
|
+
**/
|
|
28
|
+
template <typename T, class A, bool... Values>
|
|
29
|
+
struct batch_bool_constant
|
|
30
|
+
{
|
|
31
|
+
using batch_type = batch_bool<T, A>;
|
|
32
|
+
static constexpr std::size_t size = sizeof...(Values);
|
|
33
|
+
using value_type = bool;
|
|
34
|
+
static_assert(sizeof...(Values) == batch_type::size, "consistent batch size");
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
/**
|
|
38
|
+
* @brief Generate a batch of @p batch_type from this @p batch_bool_constant
|
|
39
|
+
*/
|
|
40
|
+
constexpr batch_type as_batch_bool() const noexcept { return { Values... }; }
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @brief Generate a batch of @p batch_type from this @p batch_bool_constant
|
|
44
|
+
*/
|
|
45
|
+
constexpr operator batch_type() const noexcept { return as_batch_bool(); }
|
|
46
|
+
|
|
47
|
+
constexpr bool get(size_t i) const noexcept
|
|
48
|
+
{
|
|
49
|
+
return std::array<value_type, size> { { Values... } }[i];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static constexpr int mask() noexcept
|
|
53
|
+
{
|
|
54
|
+
return mask_helper(0, static_cast<int>(Values)...);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private:
|
|
58
|
+
static constexpr int mask_helper(int acc) noexcept { return acc; }
|
|
59
|
+
|
|
60
|
+
template <class... Tys>
|
|
61
|
+
static constexpr int mask_helper(int acc, int mask, Tys... masks) noexcept
|
|
62
|
+
{
|
|
63
|
+
return mask_helper(acc | mask, (masks << 1)...);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
struct logical_or
|
|
67
|
+
{
|
|
68
|
+
constexpr bool operator()(bool x, bool y) const { return x || y; }
|
|
69
|
+
};
|
|
70
|
+
struct logical_and
|
|
71
|
+
{
|
|
72
|
+
constexpr bool operator()(bool x, bool y) const { return x && y; }
|
|
73
|
+
};
|
|
74
|
+
struct logical_xor
|
|
75
|
+
{
|
|
76
|
+
constexpr bool operator()(bool x, bool y) const { return x ^ y; }
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
template <class F, class SelfPack, class OtherPack, size_t... Indices>
|
|
80
|
+
static constexpr batch_bool_constant<T, A, F()(std::tuple_element<Indices, SelfPack>::type::value, std::tuple_element<Indices, OtherPack>::type::value)...>
|
|
81
|
+
apply(detail::index_sequence<Indices...>)
|
|
82
|
+
{
|
|
83
|
+
return {};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
template <class F, bool... OtherValues>
|
|
87
|
+
static constexpr auto apply(batch_bool_constant<T, A, Values...>, batch_bool_constant<T, A, OtherValues...>)
|
|
88
|
+
-> decltype(apply<F, std::tuple<std::integral_constant<bool, Values>...>, std::tuple<std::integral_constant<bool, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>()))
|
|
89
|
+
{
|
|
90
|
+
static_assert(sizeof...(Values) == sizeof...(OtherValues), "compatible constant batches");
|
|
91
|
+
return apply<F, std::tuple<std::integral_constant<bool, Values>...>, std::tuple<std::integral_constant<bool, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>());
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public:
|
|
95
|
+
#define MAKE_BINARY_OP(OP, NAME) \
|
|
96
|
+
template <bool... OtherValues> \
|
|
97
|
+
constexpr auto operator OP(batch_bool_constant<T, A, OtherValues...> other) const \
|
|
98
|
+
-> decltype(apply<NAME>(*this, other)) \
|
|
99
|
+
{ \
|
|
100
|
+
return apply<NAME>(*this, other); \
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
MAKE_BINARY_OP(|, logical_or)
|
|
104
|
+
MAKE_BINARY_OP(||, logical_or)
|
|
105
|
+
MAKE_BINARY_OP(&, logical_and)
|
|
106
|
+
MAKE_BINARY_OP(&&, logical_and)
|
|
107
|
+
MAKE_BINARY_OP(^, logical_xor)
|
|
108
|
+
|
|
109
|
+
#undef MAKE_BINARY_OP
|
|
110
|
+
|
|
111
|
+
constexpr batch_bool_constant<T, A, !Values...> operator!() const
|
|
112
|
+
{
|
|
113
|
+
return {};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
constexpr batch_bool_constant<T, A, !Values...> operator~() const
|
|
117
|
+
{
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @brief batch of integral constants
|
|
124
|
+
*
|
|
125
|
+
* Abstract representation of a batch of integral constants.
|
|
126
|
+
*
|
|
127
|
+
* @tparam batch_type the type of the associated batch values.
|
|
128
|
+
* @tparam Values constants represented by this batch
|
|
129
|
+
**/
|
|
130
|
+
template <typename T, class A, T... Values>
|
|
131
|
+
struct batch_constant
|
|
132
|
+
{
|
|
133
|
+
static constexpr std::size_t size = sizeof...(Values);
|
|
134
|
+
using batch_type = batch<T, A>;
|
|
135
|
+
using value_type = typename batch_type::value_type;
|
|
136
|
+
static_assert(sizeof...(Values) == batch_type::size, "consistent batch size");
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @brief Generate a batch of @p batch_type from this @p batch_constant
|
|
140
|
+
*/
|
|
141
|
+
XSIMD_INLINE batch_type as_batch() const noexcept { return { Values... }; }
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @brief Generate a batch of @p batch_type from this @p batch_constant
|
|
145
|
+
*/
|
|
146
|
+
XSIMD_INLINE operator batch_type() const noexcept { return as_batch(); }
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @brief Get the @p i th element of this @p batch_constant
|
|
150
|
+
*/
|
|
151
|
+
constexpr T get(size_t i) const noexcept
|
|
152
|
+
{
|
|
153
|
+
return get(i, std::array<T, size> { Values... });
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
private:
|
|
157
|
+
constexpr T get(size_t i, std::array<T, size> const& values) const noexcept
|
|
158
|
+
{
|
|
159
|
+
return values[i];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
struct arithmetic_add
|
|
163
|
+
{
|
|
164
|
+
constexpr T operator()(T x, T y) const { return x + y; }
|
|
165
|
+
};
|
|
166
|
+
struct arithmetic_sub
|
|
167
|
+
{
|
|
168
|
+
constexpr T operator()(T x, T y) const { return x - y; }
|
|
169
|
+
};
|
|
170
|
+
struct arithmetic_mul
|
|
171
|
+
{
|
|
172
|
+
constexpr T operator()(T x, T y) const { return x * y; }
|
|
173
|
+
};
|
|
174
|
+
struct arithmetic_div
|
|
175
|
+
{
|
|
176
|
+
constexpr T operator()(T x, T y) const { return x / y; }
|
|
177
|
+
};
|
|
178
|
+
struct arithmetic_mod
|
|
179
|
+
{
|
|
180
|
+
constexpr T operator()(T x, T y) const { return x % y; }
|
|
181
|
+
};
|
|
182
|
+
struct binary_and
|
|
183
|
+
{
|
|
184
|
+
constexpr T operator()(T x, T y) const { return x & y; }
|
|
185
|
+
};
|
|
186
|
+
struct binary_or
|
|
187
|
+
{
|
|
188
|
+
constexpr T operator()(T x, T y) const { return x | y; }
|
|
189
|
+
};
|
|
190
|
+
struct binary_xor
|
|
191
|
+
{
|
|
192
|
+
constexpr T operator()(T x, T y) const { return x ^ y; }
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
template <class F, class SelfPack, class OtherPack, size_t... Indices>
|
|
196
|
+
static constexpr batch_constant<T, A, F()(std::tuple_element<Indices, SelfPack>::type::value, std::tuple_element<Indices, OtherPack>::type::value)...>
|
|
197
|
+
apply(detail::index_sequence<Indices...>)
|
|
198
|
+
{
|
|
199
|
+
return {};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
template <class F, T... OtherValues>
|
|
203
|
+
static constexpr auto apply(batch_constant<T, A, Values...>, batch_constant<T, A, OtherValues...>)
|
|
204
|
+
-> decltype(apply<F, std::tuple<std::integral_constant<T, Values>...>, std::tuple<std::integral_constant<T, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>()))
|
|
205
|
+
{
|
|
206
|
+
static_assert(sizeof...(Values) == sizeof...(OtherValues), "compatible constant batches");
|
|
207
|
+
return apply<F, std::tuple<std::integral_constant<T, Values>...>, std::tuple<std::integral_constant<T, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>());
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
public:
|
|
211
|
+
#define MAKE_BINARY_OP(OP, NAME) \
|
|
212
|
+
template <T... OtherValues> \
|
|
213
|
+
constexpr auto operator OP(batch_constant<T, A, OtherValues...> other) const \
|
|
214
|
+
-> decltype(apply<NAME>(*this, other)) \
|
|
215
|
+
{ \
|
|
216
|
+
return apply<NAME>(*this, other); \
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
MAKE_BINARY_OP(+, arithmetic_add)
|
|
220
|
+
MAKE_BINARY_OP(-, arithmetic_sub)
|
|
221
|
+
MAKE_BINARY_OP(*, arithmetic_mul)
|
|
222
|
+
MAKE_BINARY_OP(/, arithmetic_div)
|
|
223
|
+
MAKE_BINARY_OP(%, arithmetic_mod)
|
|
224
|
+
MAKE_BINARY_OP(&, binary_and)
|
|
225
|
+
MAKE_BINARY_OP(|, binary_or)
|
|
226
|
+
MAKE_BINARY_OP(^, binary_xor)
|
|
227
|
+
|
|
228
|
+
#undef MAKE_BINARY_OP
|
|
229
|
+
|
|
230
|
+
constexpr batch_constant<T, A, (T)-Values...> operator-() const
|
|
231
|
+
{
|
|
232
|
+
return {};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
constexpr batch_constant<T, A, (T) + Values...> operator+() const
|
|
236
|
+
{
|
|
237
|
+
return {};
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
constexpr batch_constant<T, A, (T)~Values...> operator~() const
|
|
241
|
+
{
|
|
242
|
+
return {};
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
namespace detail
|
|
247
|
+
{
|
|
248
|
+
template <typename T, class G, class A, std::size_t... Is>
|
|
249
|
+
XSIMD_INLINE constexpr auto make_batch_constant(detail::index_sequence<Is...>) noexcept
|
|
250
|
+
-> batch_constant<T, A, (T)G::get(Is, sizeof...(Is))...>
|
|
251
|
+
{
|
|
252
|
+
return {};
|
|
253
|
+
}
|
|
254
|
+
template <typename T, class G, class A, std::size_t... Is>
|
|
255
|
+
XSIMD_INLINE constexpr auto make_batch_bool_constant(detail::index_sequence<Is...>) noexcept
|
|
256
|
+
-> batch_bool_constant<T, A, G::get(Is, sizeof...(Is))...>
|
|
257
|
+
{
|
|
258
|
+
return {};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
} // namespace detail
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* @brief Build a @c batch_constant out of a generator function
|
|
265
|
+
*
|
|
266
|
+
* @tparam batch_type type of the (non-constant) batch to build
|
|
267
|
+
* @tparam G type used to generate that batch. That type must have a static
|
|
268
|
+
* member @c get that's used to generate the batch constant. Conversely, the
|
|
269
|
+
* generated batch_constant has value `{G::get(0, batch_size), ... , G::get(batch_size - 1, batch_size)}`
|
|
270
|
+
*
|
|
271
|
+
* The following generator produces a batch of `(n - 1, 0, 1, ... n-2)`
|
|
272
|
+
*
|
|
273
|
+
* @code
|
|
274
|
+
* struct Rot
|
|
275
|
+
* {
|
|
276
|
+
* static constexpr unsigned get(unsigned i, unsigned n)
|
|
277
|
+
* {
|
|
278
|
+
* return (i + n - 1) % n;
|
|
279
|
+
* }
|
|
280
|
+
* };
|
|
281
|
+
* @endcode
|
|
282
|
+
*/
|
|
283
|
+
template <typename T, class G, class A = default_arch>
|
|
284
|
+
XSIMD_INLINE constexpr auto make_batch_constant() noexcept -> decltype(detail::make_batch_constant<T, G, A>(detail::make_index_sequence<batch<T, A>::size>()))
|
|
285
|
+
{
|
|
286
|
+
return detail::make_batch_constant<T, G, A>(detail::make_index_sequence<batch<T, A>::size>());
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
template <typename T, class G, class A = default_arch>
|
|
290
|
+
XSIMD_INLINE constexpr auto make_batch_bool_constant() noexcept
|
|
291
|
+
-> decltype(detail::make_batch_bool_constant<T, G, A>(
|
|
292
|
+
detail::make_index_sequence<batch<T, A>::size>()))
|
|
293
|
+
{
|
|
294
|
+
return detail::make_batch_bool_constant<T, G, A>(
|
|
295
|
+
detail::make_index_sequence<batch<T, A>::size>());
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
} // namespace xsimd
|
|
299
|
+
|
|
300
|
+
#endif
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_COMMON_ARCH_HPP
|
|
13
|
+
#define XSIMD_COMMON_ARCH_HPP
|
|
14
|
+
|
|
15
|
+
#include "../config/xsimd_config.hpp"
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @defgroup architectures Architecture description
|
|
19
|
+
* */
|
|
20
|
+
namespace xsimd
|
|
21
|
+
{
|
|
22
|
+
/**
|
|
23
|
+
* @ingroup architectures
|
|
24
|
+
*
|
|
25
|
+
* Base class for all architectures.
|
|
26
|
+
*/
|
|
27
|
+
struct common
|
|
28
|
+
{
|
|
29
|
+
/// Whether this architecture is supported at compile-time.
|
|
30
|
+
static constexpr bool supported() noexcept { return true; }
|
|
31
|
+
/// Whether this architecture is available at run-time.
|
|
32
|
+
static constexpr bool available() noexcept { return true; }
|
|
33
|
+
/// If this architectures supports aligned memory accesses, the required
|
|
34
|
+
/// alignment.
|
|
35
|
+
static constexpr std::size_t alignment() noexcept { return 0; }
|
|
36
|
+
/// Whether this architecture requires aligned memory access.
|
|
37
|
+
static constexpr bool requires_alignment() noexcept { return false; }
|
|
38
|
+
/// Name of the architecture.
|
|
39
|
+
static constexpr char const* name() noexcept { return "common"; }
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
struct unsupported
|
|
43
|
+
{
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#endif
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_EMULATED_REGISTER_HPP
|
|
13
|
+
#define XSIMD_EMULATED_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_common_arch.hpp"
|
|
16
|
+
#include "./xsimd_register.hpp"
|
|
17
|
+
|
|
18
|
+
namespace xsimd
|
|
19
|
+
{
|
|
20
|
+
/**
|
|
21
|
+
* @ingroup architectures
|
|
22
|
+
*
|
|
23
|
+
* emulated instructions
|
|
24
|
+
*/
|
|
25
|
+
template <size_t N>
|
|
26
|
+
struct emulated : common
|
|
27
|
+
{
|
|
28
|
+
static constexpr bool supported() noexcept { return true; }
|
|
29
|
+
static constexpr bool available() noexcept { return true; }
|
|
30
|
+
static constexpr bool requires_alignment() noexcept { return false; }
|
|
31
|
+
static constexpr std::size_t alignment() noexcept { return 8; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "emulated"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
namespace types
|
|
36
|
+
{
|
|
37
|
+
template <size_t N>
|
|
38
|
+
struct simd_emulated_bool_register
|
|
39
|
+
{
|
|
40
|
+
using register_type = std::array<bool, N>;
|
|
41
|
+
register_type data;
|
|
42
|
+
simd_emulated_bool_register() = default;
|
|
43
|
+
simd_emulated_bool_register(register_type r) { data = r; }
|
|
44
|
+
operator register_type() const noexcept { return data; }
|
|
45
|
+
};
|
|
46
|
+
template <typename T, size_t N>
|
|
47
|
+
struct get_bool_simd_register<T, emulated<N>>
|
|
48
|
+
{
|
|
49
|
+
using type = simd_emulated_bool_register<N / (8 * sizeof(T))>;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
template <typename T, size_t N>
|
|
53
|
+
struct simd_register<T, emulated<N>>
|
|
54
|
+
{
|
|
55
|
+
static_assert(N % (8 * sizeof(T)) == 0, "bit width must be a multiple of scalar width");
|
|
56
|
+
using register_type = std::array<T, N / (8 * sizeof(T))>;
|
|
57
|
+
register_type data;
|
|
58
|
+
XSIMD_INLINE operator register_type() const noexcept
|
|
59
|
+
{
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
template <typename T, size_t N>
|
|
64
|
+
struct has_simd_register<T, emulated<N>> : std::is_scalar<T>
|
|
65
|
+
{
|
|
66
|
+
};
|
|
67
|
+
template <typename T, size_t N>
|
|
68
|
+
struct has_simd_register<std::complex<T>, emulated<N>> : std::true_type
|
|
69
|
+
{
|
|
70
|
+
};
|
|
71
|
+
#ifdef XSIMD_ENABLE_XTL_COMPLEX
|
|
72
|
+
template <typename T, bool i3ec, size_t N>
|
|
73
|
+
struct has_simd_register<xtl::complex<T, T, i3ec>, emulated<N>> : std::true_type
|
|
74
|
+
{
|
|
75
|
+
};
|
|
76
|
+
#endif
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
#endif
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_FMA3_AVX2_REGISTER_HPP
|
|
13
|
+
#define XSIMD_FMA3_AVX2_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_avx2_register.hpp"
|
|
16
|
+
|
|
17
|
+
namespace xsimd
|
|
18
|
+
{
|
|
19
|
+
template <typename arch>
|
|
20
|
+
struct fma3;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @ingroup architectures
|
|
24
|
+
*
|
|
25
|
+
* AVX2 + FMA instructions
|
|
26
|
+
*/
|
|
27
|
+
template <>
|
|
28
|
+
struct fma3<avx2> : avx2
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_FMA3_AVX2; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "fma3+avx2"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_FMA3_AVX2
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_AVX2
|
|
38
|
+
#error "architecture inconsistency: fma3+avx2 requires avx2"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
|
|
44
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(fma3<avx2>, avx2);
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_FMA3_AVX_REGISTER_HPP
|
|
13
|
+
#define XSIMD_FMA3_AVX_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_avx_register.hpp"
|
|
16
|
+
|
|
17
|
+
namespace xsimd
|
|
18
|
+
{
|
|
19
|
+
template <typename arch>
|
|
20
|
+
struct fma3;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @ingroup architectures
|
|
24
|
+
*
|
|
25
|
+
* AVX + FMA instructions
|
|
26
|
+
*/
|
|
27
|
+
template <>
|
|
28
|
+
struct fma3<avx> : avx
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_FMA3_AVX; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "fma3+avx"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_FMA3_AVX
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_AVX
|
|
38
|
+
#error "architecture inconsistency: fma3+avx requires avx"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
|
|
44
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(fma3<avx>, avx);
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_FMA3_SSE_REGISTER_HPP
|
|
13
|
+
#define XSIMD_FMA3_SSE_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_sse4_2_register.hpp"
|
|
16
|
+
|
|
17
|
+
namespace xsimd
|
|
18
|
+
{
|
|
19
|
+
template <typename arch>
|
|
20
|
+
struct fma3;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @ingroup architectures
|
|
24
|
+
*
|
|
25
|
+
* SSE4.2 + FMA instructions
|
|
26
|
+
*/
|
|
27
|
+
template <>
|
|
28
|
+
struct fma3<sse4_2> : sse4_2
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_FMA3_SSE; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "fma3+sse4.2"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_FMA3_SSE
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_SSE4_2
|
|
38
|
+
#error "architecture inconsistency: fma3+sse4.2 requires sse4.2"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
|
|
44
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(fma3<sse4_2>, sse4_2);
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_FMA4_REGISTER_HPP
|
|
13
|
+
#define XSIMD_FMA4_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_sse4_2_register.hpp"
|
|
16
|
+
|
|
17
|
+
#if XSIMD_WITH_FMA4
|
|
18
|
+
#include <x86intrin.h>
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
namespace xsimd
|
|
22
|
+
{
|
|
23
|
+
/**
|
|
24
|
+
* @ingroup architectures
|
|
25
|
+
*
|
|
26
|
+
* SSE4.2 + FMA4 instructions
|
|
27
|
+
*/
|
|
28
|
+
struct fma4 : sse4_2
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_FMA4; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "fma4"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_FMA4
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_SSE4_2
|
|
38
|
+
#error "architecture inconsistency: fma4 requires sse4.2"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
|
|
44
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(fma4, sse4_2);
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* *
|
|
7
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
8
|
+
* *
|
|
9
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef XSIMD_I8MM_NEON64_REGISTER_HPP
|
|
13
|
+
#define XSIMD_I8MM_NEON64_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_neon64_register.hpp"
|
|
16
|
+
|
|
17
|
+
namespace xsimd
|
|
18
|
+
{
|
|
19
|
+
template <typename arch>
|
|
20
|
+
struct i8mm;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @ingroup architectures
|
|
24
|
+
*
|
|
25
|
+
* Neon64 + i8mm instructions
|
|
26
|
+
*/
|
|
27
|
+
template <>
|
|
28
|
+
struct i8mm<neon64> : neon64
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_I8MM_NEON64; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "i8mm+neon64"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_I8MM_NEON64
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_NEON64
|
|
38
|
+
#error "architecture inconsistency: i8mm+neon64 requires neon64"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
|
|
44
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(i8mm<neon64>, neon64);
|
|
45
|
+
|
|
46
|
+
template <class T>
|
|
47
|
+
struct get_bool_simd_register<T, i8mm<neon64>>
|
|
48
|
+
: detail::neon_bool_simd_register<T, i8mm<neon64>>
|
|
49
|
+
{
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
#endif
|