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,349 @@
|
|
|
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_ALIGNED_ALLOCATOR_HPP
|
|
13
|
+
#define XSIMD_ALIGNED_ALLOCATOR_HPP
|
|
14
|
+
|
|
15
|
+
#include <algorithm>
|
|
16
|
+
#include <cstddef>
|
|
17
|
+
#include <utility>
|
|
18
|
+
#ifdef _WIN32
|
|
19
|
+
#include <malloc.h>
|
|
20
|
+
#else
|
|
21
|
+
#include <cstdlib>
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#include <cassert>
|
|
25
|
+
#include <memory>
|
|
26
|
+
|
|
27
|
+
#include "../config/xsimd_arch.hpp"
|
|
28
|
+
|
|
29
|
+
namespace xsimd
|
|
30
|
+
{
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @class aligned_allocator
|
|
34
|
+
* @brief Allocator for aligned memory
|
|
35
|
+
*
|
|
36
|
+
* The aligned_allocator class template is an allocator that
|
|
37
|
+
* performs memory allocation aligned by the specified value.
|
|
38
|
+
*
|
|
39
|
+
* @tparam T type of objects to allocate.
|
|
40
|
+
* @tparam Align alignment in bytes.
|
|
41
|
+
*/
|
|
42
|
+
template <class T, size_t Align = std::conditional<std::is_same<unsupported, default_arch>::value, common, default_arch>::type::alignment()>
|
|
43
|
+
class aligned_allocator
|
|
44
|
+
{
|
|
45
|
+
public:
|
|
46
|
+
using value_type = T;
|
|
47
|
+
using pointer = T*;
|
|
48
|
+
using const_pointer = const T*;
|
|
49
|
+
using reference = T&;
|
|
50
|
+
using const_reference = const T&;
|
|
51
|
+
using size_type = size_t;
|
|
52
|
+
using difference_type = ptrdiff_t;
|
|
53
|
+
|
|
54
|
+
static constexpr size_t alignment = Align;
|
|
55
|
+
|
|
56
|
+
template <class U>
|
|
57
|
+
struct rebind
|
|
58
|
+
{
|
|
59
|
+
using other = aligned_allocator<U, Align>;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
XSIMD_INLINE aligned_allocator() noexcept;
|
|
63
|
+
XSIMD_INLINE aligned_allocator(const aligned_allocator& rhs) noexcept;
|
|
64
|
+
|
|
65
|
+
template <class U>
|
|
66
|
+
XSIMD_INLINE aligned_allocator(const aligned_allocator<U, Align>& rhs) noexcept;
|
|
67
|
+
|
|
68
|
+
XSIMD_INLINE ~aligned_allocator();
|
|
69
|
+
|
|
70
|
+
XSIMD_INLINE pointer address(reference) noexcept;
|
|
71
|
+
XSIMD_INLINE const_pointer address(const_reference) const noexcept;
|
|
72
|
+
|
|
73
|
+
XSIMD_INLINE pointer allocate(size_type n, const void* hint = 0);
|
|
74
|
+
XSIMD_INLINE void deallocate(pointer p, size_type n);
|
|
75
|
+
|
|
76
|
+
XSIMD_INLINE size_type max_size() const noexcept;
|
|
77
|
+
XSIMD_INLINE size_type size_max() const noexcept;
|
|
78
|
+
|
|
79
|
+
template <class U, class... Args>
|
|
80
|
+
XSIMD_INLINE void construct(U* p, Args&&... args);
|
|
81
|
+
|
|
82
|
+
template <class U>
|
|
83
|
+
XSIMD_INLINE void destroy(U* p);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
template <class T1, size_t Align1, class T2, size_t Align2>
|
|
87
|
+
XSIMD_INLINE bool operator==(const aligned_allocator<T1, Align1>& lhs,
|
|
88
|
+
const aligned_allocator<T2, Align2>& rhs) noexcept;
|
|
89
|
+
|
|
90
|
+
template <class T1, size_t Align1, class T2, size_t Align2>
|
|
91
|
+
XSIMD_INLINE bool operator!=(const aligned_allocator<T1, Align1>& lhs,
|
|
92
|
+
const aligned_allocator<T2, Align2>& rhs) noexcept;
|
|
93
|
+
|
|
94
|
+
XSIMD_INLINE void* aligned_malloc(size_t size, size_t alignment);
|
|
95
|
+
XSIMD_INLINE void aligned_free(void* ptr);
|
|
96
|
+
|
|
97
|
+
template <class T>
|
|
98
|
+
XSIMD_INLINE size_t get_alignment_offset(const T* p, size_t size, size_t block_size);
|
|
99
|
+
|
|
100
|
+
/************************************
|
|
101
|
+
* aligned_allocator implementation *
|
|
102
|
+
************************************/
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Default constructor.
|
|
106
|
+
*/
|
|
107
|
+
template <class T, size_t A>
|
|
108
|
+
XSIMD_INLINE aligned_allocator<T, A>::aligned_allocator() noexcept
|
|
109
|
+
{
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Copy constructor.
|
|
114
|
+
*/
|
|
115
|
+
template <class T, size_t A>
|
|
116
|
+
XSIMD_INLINE aligned_allocator<T, A>::aligned_allocator(const aligned_allocator&) noexcept
|
|
117
|
+
{
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Extended copy constructor.
|
|
122
|
+
*/
|
|
123
|
+
template <class T, size_t A>
|
|
124
|
+
template <class U>
|
|
125
|
+
XSIMD_INLINE aligned_allocator<T, A>::aligned_allocator(const aligned_allocator<U, A>&) noexcept
|
|
126
|
+
{
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Destructor.
|
|
131
|
+
*/
|
|
132
|
+
template <class T, size_t A>
|
|
133
|
+
XSIMD_INLINE aligned_allocator<T, A>::~aligned_allocator()
|
|
134
|
+
{
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Returns the actual address of \c r even in presence of overloaded \c operator&.
|
|
139
|
+
* @param r the object to acquire address of.
|
|
140
|
+
* @return the actual address of \c r.
|
|
141
|
+
*/
|
|
142
|
+
template <class T, size_t A>
|
|
143
|
+
XSIMD_INLINE auto
|
|
144
|
+
aligned_allocator<T, A>::address(reference r) noexcept -> pointer
|
|
145
|
+
{
|
|
146
|
+
return &r;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Returns the actual address of \c r even in presence of overloaded \c operator&.
|
|
151
|
+
* @param r the object to acquire address of.
|
|
152
|
+
* @return the actual address of \c r.
|
|
153
|
+
*/
|
|
154
|
+
template <class T, size_t A>
|
|
155
|
+
XSIMD_INLINE auto
|
|
156
|
+
aligned_allocator<T, A>::address(const_reference r) const noexcept -> const_pointer
|
|
157
|
+
{
|
|
158
|
+
return &r;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Allocates <tt>n * sizeof(T)</tt> bytes of uninitialized memory, aligned by \c A.
|
|
163
|
+
* The alignment may require some extra memory allocation.
|
|
164
|
+
* @param n the number of objects to allocate storage for.
|
|
165
|
+
* @param hint unused parameter provided for standard compliance.
|
|
166
|
+
* @return a pointer to the first byte of a memory block suitably aligned and sufficient to
|
|
167
|
+
* hold an array of \c n objects of type \c T.
|
|
168
|
+
*/
|
|
169
|
+
template <class T, size_t A>
|
|
170
|
+
XSIMD_INLINE auto
|
|
171
|
+
aligned_allocator<T, A>::allocate(size_type n, const void*) -> pointer
|
|
172
|
+
{
|
|
173
|
+
pointer res = reinterpret_cast<pointer>(aligned_malloc(sizeof(T) * n, A));
|
|
174
|
+
#if defined(_CPPUNWIND) || defined(__cpp_exceptions)
|
|
175
|
+
if (res == nullptr)
|
|
176
|
+
throw std::bad_alloc();
|
|
177
|
+
#endif
|
|
178
|
+
return res;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Deallocates the storage referenced by the pointer p, which must be a pointer obtained by
|
|
183
|
+
* an earlier call to allocate(). The argument \c n must be equal to the first argument of the call
|
|
184
|
+
* to allocate() that originally produced \c p; otherwise, the behavior is undefined.
|
|
185
|
+
* @param p pointer obtained from allocate().
|
|
186
|
+
* @param n number of objects earlier passed to allocate().
|
|
187
|
+
*/
|
|
188
|
+
template <class T, size_t A>
|
|
189
|
+
XSIMD_INLINE void aligned_allocator<T, A>::deallocate(pointer p, size_type)
|
|
190
|
+
{
|
|
191
|
+
aligned_free(p);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Returns the maximum theoretically possible value of \c n, for which the
|
|
196
|
+
* call allocate(n, 0) could succeed.
|
|
197
|
+
* @return the maximum supported allocated size.
|
|
198
|
+
*/
|
|
199
|
+
template <class T, size_t A>
|
|
200
|
+
XSIMD_INLINE auto
|
|
201
|
+
aligned_allocator<T, A>::max_size() const noexcept -> size_type
|
|
202
|
+
{
|
|
203
|
+
return size_type(-1) / sizeof(T);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* This method is deprecated, use max_size() instead
|
|
208
|
+
*/
|
|
209
|
+
template <class T, size_t A>
|
|
210
|
+
XSIMD_INLINE auto
|
|
211
|
+
aligned_allocator<T, A>::size_max() const noexcept -> size_type
|
|
212
|
+
{
|
|
213
|
+
return size_type(-1) / sizeof(T);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Constructs an object of type \c T in allocated uninitialized memory
|
|
218
|
+
* pointed to by \c p, using placement-new.
|
|
219
|
+
* @param p pointer to allocated uninitialized memory.
|
|
220
|
+
* @param args the constructor arguments to use.
|
|
221
|
+
*/
|
|
222
|
+
template <class T, size_t A>
|
|
223
|
+
template <class U, class... Args>
|
|
224
|
+
XSIMD_INLINE void aligned_allocator<T, A>::construct(U* p, Args&&... args)
|
|
225
|
+
{
|
|
226
|
+
new ((void*)p) U(std::forward<Args>(args)...);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Calls the destructor of the object pointed to by \c p.
|
|
231
|
+
* @param p pointer to the object that is going to be destroyed.
|
|
232
|
+
*/
|
|
233
|
+
template <class T, size_t A>
|
|
234
|
+
template <class U>
|
|
235
|
+
XSIMD_INLINE void aligned_allocator<T, A>::destroy(U* p)
|
|
236
|
+
{
|
|
237
|
+
p->~U();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* @defgroup allocator_comparison Comparison operators
|
|
242
|
+
*/
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* @ingroup allocator_comparison
|
|
246
|
+
* Compares two aligned memory allocator for equality. Since allocators
|
|
247
|
+
* are stateless, return \c true iff <tt>A1 == A2</tt>.
|
|
248
|
+
* @param lhs aligned_allocator to compare.
|
|
249
|
+
* @param rhs aligned_allocator to compare.
|
|
250
|
+
* @return true if the allocators have the same alignment.
|
|
251
|
+
*/
|
|
252
|
+
template <class T1, size_t A1, class T2, size_t A2>
|
|
253
|
+
XSIMD_INLINE bool operator==(const aligned_allocator<T1, A1>& lhs,
|
|
254
|
+
const aligned_allocator<T2, A2>& rhs) noexcept
|
|
255
|
+
{
|
|
256
|
+
return lhs.alignment == rhs.alignment;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @ingroup allocator_comparison
|
|
261
|
+
* Compares two aligned memory allocator for inequality. Since allocators
|
|
262
|
+
* are stateless, return \c true iff <tt>A1 != A2</tt>.
|
|
263
|
+
* @param lhs aligned_allocator to compare.
|
|
264
|
+
* @param rhs aligned_allocator to compare.
|
|
265
|
+
* @return true if the allocators have different alignments.
|
|
266
|
+
*/
|
|
267
|
+
template <class T1, size_t A1, class T2, size_t A2>
|
|
268
|
+
XSIMD_INLINE bool operator!=(const aligned_allocator<T1, A1>& lhs,
|
|
269
|
+
const aligned_allocator<T2, A2>& rhs) noexcept
|
|
270
|
+
{
|
|
271
|
+
return !(lhs == rhs);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/****************************************
|
|
275
|
+
* aligned malloc / free implementation *
|
|
276
|
+
****************************************/
|
|
277
|
+
|
|
278
|
+
namespace detail
|
|
279
|
+
{
|
|
280
|
+
XSIMD_INLINE void* xaligned_malloc(size_t size, size_t alignment)
|
|
281
|
+
{
|
|
282
|
+
assert(((alignment & (alignment - 1)) == 0) && "alignment must be a power of two");
|
|
283
|
+
assert((alignment >= sizeof(void*)) && "alignment must be at least the size of a pointer");
|
|
284
|
+
void* res = nullptr;
|
|
285
|
+
#ifdef _WIN32
|
|
286
|
+
res = _aligned_malloc(size, alignment);
|
|
287
|
+
#else
|
|
288
|
+
if (posix_memalign(&res, alignment, size) != 0)
|
|
289
|
+
{
|
|
290
|
+
res = nullptr;
|
|
291
|
+
}
|
|
292
|
+
#endif
|
|
293
|
+
return res;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
XSIMD_INLINE void xaligned_free(void* ptr)
|
|
297
|
+
{
|
|
298
|
+
#ifdef _WIN32
|
|
299
|
+
_aligned_free(ptr);
|
|
300
|
+
#else
|
|
301
|
+
free(ptr);
|
|
302
|
+
#endif
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
XSIMD_INLINE void* aligned_malloc(size_t size, size_t alignment)
|
|
307
|
+
{
|
|
308
|
+
return detail::xaligned_malloc(size, alignment);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
XSIMD_INLINE void aligned_free(void* ptr)
|
|
312
|
+
{
|
|
313
|
+
detail::xaligned_free(ptr);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
template <class T>
|
|
317
|
+
XSIMD_INLINE size_t get_alignment_offset(const T* p, size_t size, size_t block_size)
|
|
318
|
+
{
|
|
319
|
+
// size_t block_size = simd_traits<T>::size;
|
|
320
|
+
if (block_size == 1)
|
|
321
|
+
{
|
|
322
|
+
// The simd_block consists of exactly one scalar so that all
|
|
323
|
+
// elements of the array
|
|
324
|
+
// are "well" aligned.
|
|
325
|
+
return 0;
|
|
326
|
+
}
|
|
327
|
+
else if (size_t(p) & (sizeof(T) - 1))
|
|
328
|
+
{
|
|
329
|
+
// The array is not aligned to the size of a single element, so that
|
|
330
|
+
// no element
|
|
331
|
+
// of the array is well aligned
|
|
332
|
+
return size;
|
|
333
|
+
}
|
|
334
|
+
else
|
|
335
|
+
{
|
|
336
|
+
size_t block_mask = block_size - 1;
|
|
337
|
+
return std::min<size_t>(
|
|
338
|
+
(block_size - ((size_t(p) / sizeof(T)) & block_mask)) & block_mask,
|
|
339
|
+
size);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
template <class T, class A = default_arch>
|
|
344
|
+
using default_allocator = typename std::conditional<A::requires_alignment(),
|
|
345
|
+
aligned_allocator<T, A::alignment()>,
|
|
346
|
+
std::allocator<T>>::type;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
#endif
|
|
@@ -0,0 +1,91 @@
|
|
|
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_ALIGNMENT_HPP
|
|
13
|
+
#define XSIMD_ALIGNMENT_HPP
|
|
14
|
+
|
|
15
|
+
#include "../types/xsimd_utils.hpp"
|
|
16
|
+
#include "xsimd_aligned_allocator.hpp"
|
|
17
|
+
|
|
18
|
+
namespace xsimd
|
|
19
|
+
{
|
|
20
|
+
/**
|
|
21
|
+
* @struct aligned_mode
|
|
22
|
+
* @brief tag for load and store of aligned memory.
|
|
23
|
+
*/
|
|
24
|
+
struct aligned_mode
|
|
25
|
+
{
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @struct unaligned_mode
|
|
30
|
+
* @brief tag for load and store of unaligned memory.
|
|
31
|
+
*/
|
|
32
|
+
struct unaligned_mode
|
|
33
|
+
{
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/***********************
|
|
37
|
+
* Allocator alignment *
|
|
38
|
+
***********************/
|
|
39
|
+
|
|
40
|
+
template <class A>
|
|
41
|
+
struct allocator_alignment
|
|
42
|
+
{
|
|
43
|
+
using type = unaligned_mode;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
template <class T, size_t N>
|
|
47
|
+
struct allocator_alignment<aligned_allocator<T, N>>
|
|
48
|
+
{
|
|
49
|
+
using type = aligned_mode;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
template <class A>
|
|
53
|
+
using allocator_alignment_t = typename allocator_alignment<A>::type;
|
|
54
|
+
|
|
55
|
+
/***********************
|
|
56
|
+
* container alignment *
|
|
57
|
+
***********************/
|
|
58
|
+
|
|
59
|
+
template <class C, class = void>
|
|
60
|
+
struct container_alignment
|
|
61
|
+
{
|
|
62
|
+
using type = unaligned_mode;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
template <class C>
|
|
66
|
+
struct container_alignment<C, detail::void_t<typename C::allocator_type>>
|
|
67
|
+
{
|
|
68
|
+
using type = allocator_alignment_t<typename C::allocator_type>;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
template <class C>
|
|
72
|
+
using container_alignment_t = typename container_alignment<C>::type;
|
|
73
|
+
|
|
74
|
+
/*********************
|
|
75
|
+
* alignment checker *
|
|
76
|
+
*********************/
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Checks whether pointer \c ptr is aligned according the alignment
|
|
80
|
+
* requirements of \c Arch.
|
|
81
|
+
* @return true if the alignment requirements are met
|
|
82
|
+
*/
|
|
83
|
+
template <class Arch = default_arch>
|
|
84
|
+
XSIMD_INLINE bool is_aligned(void const* ptr)
|
|
85
|
+
{
|
|
86
|
+
return (reinterpret_cast<uintptr_t>(ptr) % static_cast<uintptr_t>(Arch::alignment())) == 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#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
|
+
#include "xsimd_fma3_sse_register.hpp"
|
|
13
|
+
#include "xsimd_fma4_register.hpp"
|
|
14
|
+
#include "xsimd_sse2_register.hpp"
|
|
15
|
+
#include "xsimd_sse3_register.hpp"
|
|
16
|
+
#include "xsimd_sse4_1_register.hpp"
|
|
17
|
+
#include "xsimd_sse4_2_register.hpp"
|
|
18
|
+
|
|
19
|
+
#include "xsimd_avx2_register.hpp"
|
|
20
|
+
#include "xsimd_avx_register.hpp"
|
|
21
|
+
#include "xsimd_avxvnni_register.hpp"
|
|
22
|
+
#include "xsimd_fma3_avx2_register.hpp"
|
|
23
|
+
#include "xsimd_fma3_avx_register.hpp"
|
|
24
|
+
|
|
25
|
+
#include "xsimd_avx512vnni_avx512bw_register.hpp"
|
|
26
|
+
#include "xsimd_avx512vnni_avx512vbmi2_register.hpp"
|
|
27
|
+
|
|
28
|
+
#include "xsimd_avx512ifma_register.hpp"
|
|
29
|
+
#include "xsimd_avx512vbmi2_register.hpp"
|
|
30
|
+
#include "xsimd_avx512vbmi_register.hpp"
|
|
31
|
+
|
|
32
|
+
#include "xsimd_avx512er_register.hpp"
|
|
33
|
+
#include "xsimd_avx512pf_register.hpp"
|
|
34
|
+
|
|
35
|
+
#include "xsimd_avx512bw_register.hpp"
|
|
36
|
+
#include "xsimd_avx512cd_register.hpp"
|
|
37
|
+
#include "xsimd_avx512dq_register.hpp"
|
|
38
|
+
#include "xsimd_avx512f_register.hpp"
|
|
39
|
+
|
|
40
|
+
#include "xsimd_i8mm_neon64_register.hpp"
|
|
41
|
+
|
|
42
|
+
#include "xsimd_neon64_register.hpp"
|
|
43
|
+
#include "xsimd_neon_register.hpp"
|
|
44
|
+
|
|
45
|
+
#include "xsimd_sve_register.hpp"
|
|
46
|
+
|
|
47
|
+
#include "xsimd_rvv_register.hpp"
|
|
48
|
+
|
|
49
|
+
#include "xsimd_wasm_register.hpp"
|
|
50
|
+
|
|
51
|
+
#include "xsimd_vsx_register.hpp"
|
|
52
|
+
|
|
53
|
+
#if XSIMD_WITH_EMULATED
|
|
54
|
+
#include "xsimd_emulated_register.hpp"
|
|
55
|
+
#endif
|