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,75 @@
|
|
|
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_HPP
|
|
13
|
+
#define XSIMD_HPP
|
|
14
|
+
|
|
15
|
+
#if defined(__FAST_MATH__)
|
|
16
|
+
#define XSIMD_NO_DENORMALS
|
|
17
|
+
#define XSIMD_NO_INFINITIES
|
|
18
|
+
#define XSIMD_NO_NANS
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#if defined(__has_cpp_attribute)
|
|
22
|
+
// if this check passes, then the compiler supports feature test macros
|
|
23
|
+
#if __has_cpp_attribute(nodiscard) >= 201603L
|
|
24
|
+
// if this check passes, then the compiler supports [[nodiscard]] without a message
|
|
25
|
+
#define XSIMD_NO_DISCARD [[nodiscard]]
|
|
26
|
+
#endif
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#if !defined(XSIMD_NO_DISCARD) && __cplusplus >= 201703L
|
|
30
|
+
// this means that the previous tests failed, but we are using C++17 or higher
|
|
31
|
+
#define XSIMD_NO_DISCARD [[nodiscard]]
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
#if !defined(XSIMD_NO_DISCARD) && (defined(__GNUC__) || defined(__clang__))
|
|
35
|
+
// this means that the previous checks failed, but we are using GCC or Clang
|
|
36
|
+
#define XSIMD_NO_DISCARD __attribute__((warn_unused_result))
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
#if !defined(XSIMD_NO_DISCARD)
|
|
40
|
+
// this means that all the previous checks failed, so we fallback to doing nothing
|
|
41
|
+
#define XSIMD_NO_DISCARD
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
#ifdef __cpp_if_constexpr
|
|
45
|
+
// this means that the compiler supports the `if constexpr` construct
|
|
46
|
+
#define XSIMD_IF_CONSTEXPR if constexpr
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
#if !defined(XSIMD_IF_CONSTEXPR) && __cplusplus >= 201703L
|
|
50
|
+
// this means that the previous test failed, but we are using C++17 or higher
|
|
51
|
+
#define XSIMD_IF_CONSTEXPR if constexpr
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
#if !defined(XSIMD_IF_CONSTEXPR)
|
|
55
|
+
// this means that all the previous checks failed, so we fallback to a normal `if`
|
|
56
|
+
#define XSIMD_IF_CONSTEXPR if
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
#include "config/xsimd_config.hpp"
|
|
60
|
+
#include "config/xsimd_inline.hpp"
|
|
61
|
+
|
|
62
|
+
#include "arch/xsimd_scalar.hpp"
|
|
63
|
+
#include "memory/xsimd_aligned_allocator.hpp"
|
|
64
|
+
|
|
65
|
+
#if defined(XSIMD_NO_SUPPORTED_ARCHITECTURE)
|
|
66
|
+
// to type definition or anything appart from scalar definition and aligned allocator
|
|
67
|
+
#else
|
|
68
|
+
#include "types/xsimd_batch.hpp"
|
|
69
|
+
#include "types/xsimd_batch_constant.hpp"
|
|
70
|
+
#include "types/xsimd_traits.hpp"
|
|
71
|
+
|
|
72
|
+
// This include must come last
|
|
73
|
+
#include "types/xsimd_api.hpp"
|
|
74
|
+
#endif
|
|
75
|
+
#endif
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#include "xsimd/xsimd.hpp"
|
|
2
|
+
#include <iostream>
|
|
3
|
+
|
|
4
|
+
namespace xs = xsimd;
|
|
5
|
+
|
|
6
|
+
int main(int, char*[])
|
|
7
|
+
{
|
|
8
|
+
xs::batch<double, xs::avx> a = { 1.5, 2.5, 3.5, 4.5 };
|
|
9
|
+
xs::batch<double, xs::avx> b = { 2.5, 3.5, 4.5, 5.5 };
|
|
10
|
+
auto mean = (a + b) / 2;
|
|
11
|
+
std::cout << mean << std::endl;
|
|
12
|
+
return 0;
|
|
13
|
+
}
|
sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean.cpp
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#include "xsimd/xsimd.hpp"
|
|
2
|
+
#include <cstddef>
|
|
3
|
+
#include <vector>
|
|
4
|
+
|
|
5
|
+
void mean(const std::vector<double>& a, const std::vector<double>& b, std::vector<double>& res)
|
|
6
|
+
{
|
|
7
|
+
using b_type = xsimd::batch<double, xsimd::avx>;
|
|
8
|
+
std::size_t inc = b_type::size;
|
|
9
|
+
std::size_t size = res.size();
|
|
10
|
+
// size for which the vectorization is possible
|
|
11
|
+
std::size_t vec_size = size - size % inc;
|
|
12
|
+
for (std::size_t i = 0; i < vec_size; i += inc)
|
|
13
|
+
{
|
|
14
|
+
b_type avec = b_type::load_unaligned(&a[i]);
|
|
15
|
+
b_type bvec = b_type::load_unaligned(&b[i]);
|
|
16
|
+
b_type rvec = (avec + bvec) / 2;
|
|
17
|
+
rvec.store_unaligned(&res[i]);
|
|
18
|
+
}
|
|
19
|
+
// Remaining part that cannot be vectorize
|
|
20
|
+
for (std::size_t i = vec_size; i < size; ++i)
|
|
21
|
+
{
|
|
22
|
+
res[i] = (a[i] + b[i]) / 2;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#include "xsimd/xsimd.hpp"
|
|
2
|
+
#include <cstddef>
|
|
3
|
+
#include <vector>
|
|
4
|
+
|
|
5
|
+
using vector_type = std::vector<double, xsimd::default_allocator<double>>;
|
|
6
|
+
void mean(const vector_type& a, const vector_type& b, vector_type& res)
|
|
7
|
+
{
|
|
8
|
+
using b_type = xsimd::batch<double>;
|
|
9
|
+
std::size_t inc = b_type::size;
|
|
10
|
+
std::size_t size = res.size();
|
|
11
|
+
// size for which the vectorization is possible
|
|
12
|
+
std::size_t vec_size = size - size % inc;
|
|
13
|
+
for (std::size_t i = 0; i < vec_size; i += inc)
|
|
14
|
+
{
|
|
15
|
+
b_type avec = b_type::load_aligned(&a[i]);
|
|
16
|
+
b_type bvec = b_type::load_aligned(&b[i]);
|
|
17
|
+
b_type rvec = (avec + bvec) / 2;
|
|
18
|
+
rvec.store_aligned(&res[i]);
|
|
19
|
+
}
|
|
20
|
+
// Remaining part that cannot be vectorize
|
|
21
|
+
for (std::size_t i = vec_size; i < size; ++i)
|
|
22
|
+
{
|
|
23
|
+
res[i] = (a[i] + b[i]) / 2;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#include "xsimd/xsimd.hpp"
|
|
2
|
+
#include <cstddef>
|
|
3
|
+
#include <vector>
|
|
4
|
+
|
|
5
|
+
struct mean
|
|
6
|
+
{
|
|
7
|
+
template <class C, class Tag, class Arch>
|
|
8
|
+
void operator()(Arch, const C& a, const C& b, C& res, Tag)
|
|
9
|
+
{
|
|
10
|
+
using b_type = xsimd::batch<double, Arch>;
|
|
11
|
+
std::size_t inc = b_type::size;
|
|
12
|
+
std::size_t size = res.size();
|
|
13
|
+
// size for which the vectorization is possible
|
|
14
|
+
std::size_t vec_size = size - size % inc;
|
|
15
|
+
for (std::size_t i = 0; i < vec_size; i += inc)
|
|
16
|
+
{
|
|
17
|
+
b_type avec = b_type::load(&a[i], Tag());
|
|
18
|
+
b_type bvec = b_type::load(&b[i], Tag());
|
|
19
|
+
b_type rvec = (avec + bvec) / 2;
|
|
20
|
+
xsimd::store(&res[i], rvec, Tag());
|
|
21
|
+
}
|
|
22
|
+
// Remaining part that cannot be vectorize
|
|
23
|
+
for (std::size_t i = vec_size; i < size; ++i)
|
|
24
|
+
{
|
|
25
|
+
res[i] = (a[i] + b[i]) / 2;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#include "xsimd/xsimd.hpp"
|
|
2
|
+
#include <cstddef>
|
|
3
|
+
#include <vector>
|
|
4
|
+
|
|
5
|
+
template <class C, class Tag>
|
|
6
|
+
void mean(const C& a, const C& b, C& res, Tag)
|
|
7
|
+
{
|
|
8
|
+
using b_type = xsimd::batch<double>;
|
|
9
|
+
std::size_t inc = b_type::size;
|
|
10
|
+
std::size_t size = res.size();
|
|
11
|
+
// size for which the vectorization is possible
|
|
12
|
+
std::size_t vec_size = size - size % inc;
|
|
13
|
+
for (std::size_t i = 0; i < vec_size; i += inc)
|
|
14
|
+
{
|
|
15
|
+
b_type avec = b_type::load(&a[i], Tag());
|
|
16
|
+
b_type bvec = b_type::load(&b[i], Tag());
|
|
17
|
+
b_type rvec = (avec + bvec) / 2;
|
|
18
|
+
xsimd::store(&res[i], rvec, Tag());
|
|
19
|
+
}
|
|
20
|
+
// Remaining part that cannot be vectorize
|
|
21
|
+
for (std::size_t i = vec_size; i < size; ++i)
|
|
22
|
+
{
|
|
23
|
+
res[i] = (a[i] + b[i]) / 2;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#ifndef _SUM_HPP
|
|
2
|
+
#define _SUM_HPP
|
|
3
|
+
#include "xsimd/xsimd.hpp"
|
|
4
|
+
|
|
5
|
+
// functor with a call method that depends on `Arch`
|
|
6
|
+
struct sum
|
|
7
|
+
{
|
|
8
|
+
// It's critical not to use an in-class definition here.
|
|
9
|
+
// In-class and inline definition bypass extern template mechanism.
|
|
10
|
+
template <class Arch, class T>
|
|
11
|
+
T operator()(Arch, T const* data, unsigned size);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
template <class Arch, class T>
|
|
15
|
+
T sum::operator()(Arch, T const* data, unsigned size)
|
|
16
|
+
{
|
|
17
|
+
using batch = xsimd::batch<T, Arch>;
|
|
18
|
+
batch acc(static_cast<T>(0));
|
|
19
|
+
const unsigned n = size / batch::size * batch::size;
|
|
20
|
+
for (unsigned i = 0; i != n; i += batch::size)
|
|
21
|
+
acc += batch::load_unaligned(data + i);
|
|
22
|
+
T star_acc = xsimd::reduce_add(acc);
|
|
23
|
+
for (unsigned i = n; i < size; ++i)
|
|
24
|
+
star_acc += data[i];
|
|
25
|
+
return star_acc;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Inform the compiler that sse2 and avx2 implementation are to be found in another compilation unit.
|
|
29
|
+
extern template float sum::operator()<xsimd::avx2, float>(xsimd::avx2, float const*, unsigned);
|
|
30
|
+
extern template float sum::operator()<xsimd::sse2, float>(xsimd::sse2, float const*, unsigned);
|
|
31
|
+
#endif
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#include <cstddef>
|
|
2
|
+
#include <vector>
|
|
3
|
+
|
|
4
|
+
void mean(const std::vector<double>& a, const std::vector<double>& b, std::vector<double>& res)
|
|
5
|
+
{
|
|
6
|
+
std::size_t size = res.size();
|
|
7
|
+
for (std::size_t i = 0; i < size; ++i)
|
|
8
|
+
{
|
|
9
|
+
res[i] = (a[i] + b[i]) / 2;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
#ifndef EMSCRIPTEN
|
|
12
|
+
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
|
|
13
|
+
#include "doctest/doctest.h"
|
|
14
|
+
#else
|
|
15
|
+
|
|
16
|
+
#define DOCTEST_CONFIG_IMPLEMENT
|
|
17
|
+
#include "doctest/doctest.h"
|
|
18
|
+
#include <emscripten/bind.h>
|
|
19
|
+
|
|
20
|
+
int run_tests()
|
|
21
|
+
{
|
|
22
|
+
doctest::Context context;
|
|
23
|
+
return context.run();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
EMSCRIPTEN_BINDINGS(my_module)
|
|
27
|
+
{
|
|
28
|
+
emscripten::function("run_tests", &run_tests);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#endif
|
|
@@ -0,0 +1,230 @@
|
|
|
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/xsimd.hpp"
|
|
13
|
+
#ifndef XSIMD_NO_SUPPORTED_ARCHITECTURE
|
|
14
|
+
|
|
15
|
+
#include <functional>
|
|
16
|
+
#include <numeric>
|
|
17
|
+
#include <random>
|
|
18
|
+
|
|
19
|
+
#include "test_utils.hpp"
|
|
20
|
+
|
|
21
|
+
template <class B>
|
|
22
|
+
struct xsimd_api_test
|
|
23
|
+
{
|
|
24
|
+
using batch_type = B;
|
|
25
|
+
using batch_bool_type = typename B::batch_bool_type;
|
|
26
|
+
using arch_type = typename B::arch_type;
|
|
27
|
+
using value_type = typename B::value_type;
|
|
28
|
+
static constexpr size_t size = B::size;
|
|
29
|
+
using array_type = std::array<value_type, size>;
|
|
30
|
+
using int8_vector_type = std::vector<int8_t, xsimd::default_allocator<int8_t>>;
|
|
31
|
+
using uint8_vector_type = std::vector<uint8_t, xsimd::default_allocator<uint8_t>>;
|
|
32
|
+
using int16_vector_type = std::vector<int16_t, xsimd::default_allocator<int16_t>>;
|
|
33
|
+
using uint16_vector_type = std::vector<uint16_t, xsimd::default_allocator<uint16_t>>;
|
|
34
|
+
using int32_vector_type = std::vector<int32_t, xsimd::default_allocator<int32_t>>;
|
|
35
|
+
using uint32_vector_type = std::vector<uint32_t, xsimd::default_allocator<uint32_t>>;
|
|
36
|
+
using int64_vector_type = std::vector<int64_t, xsimd::default_allocator<int64_t>>;
|
|
37
|
+
using uint64_vector_type = std::vector<uint64_t, xsimd::default_allocator<uint64_t>>;
|
|
38
|
+
using float_vector_type = std::vector<float, xsimd::default_allocator<float>>;
|
|
39
|
+
using double_vector_type = std::vector<double, xsimd::default_allocator<double>>;
|
|
40
|
+
|
|
41
|
+
int8_vector_type i8_vec;
|
|
42
|
+
uint8_vector_type ui8_vec;
|
|
43
|
+
int16_vector_type i16_vec;
|
|
44
|
+
uint16_vector_type ui16_vec;
|
|
45
|
+
int32_vector_type i32_vec;
|
|
46
|
+
uint32_vector_type ui32_vec;
|
|
47
|
+
int64_vector_type i64_vec;
|
|
48
|
+
uint64_vector_type ui64_vec;
|
|
49
|
+
float_vector_type f_vec;
|
|
50
|
+
double_vector_type d_vec;
|
|
51
|
+
|
|
52
|
+
array_type expected;
|
|
53
|
+
|
|
54
|
+
xsimd_api_test()
|
|
55
|
+
{
|
|
56
|
+
init_test_vector(i8_vec);
|
|
57
|
+
init_test_vector(ui8_vec);
|
|
58
|
+
init_test_vector(i16_vec);
|
|
59
|
+
init_test_vector(ui16_vec);
|
|
60
|
+
init_test_vector(i32_vec);
|
|
61
|
+
init_test_vector(ui32_vec);
|
|
62
|
+
init_test_vector(i64_vec);
|
|
63
|
+
init_test_vector(ui64_vec);
|
|
64
|
+
init_test_vector(f_vec);
|
|
65
|
+
#if XSIMD_WITH_NEON64 || !XSIMD_WITH_NEON
|
|
66
|
+
init_test_vector(d_vec);
|
|
67
|
+
#endif
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
void test_load()
|
|
71
|
+
{
|
|
72
|
+
test_load_impl(i8_vec, "load int8_t");
|
|
73
|
+
test_load_impl(ui8_vec, "load uint8_t");
|
|
74
|
+
test_load_impl(i16_vec, "load int16_t");
|
|
75
|
+
test_load_impl(ui16_vec, "load uint16_t");
|
|
76
|
+
test_load_impl(i32_vec, "load int32_t");
|
|
77
|
+
test_load_impl(ui32_vec, "load uint32_t");
|
|
78
|
+
test_load_impl(i64_vec, "load int64_t");
|
|
79
|
+
test_load_impl(ui64_vec, "load uint64_t");
|
|
80
|
+
test_load_impl(f_vec, "load float");
|
|
81
|
+
#if XSIMD_WITH_NEON64 || !XSIMD_WITH_NEON
|
|
82
|
+
test_load_impl(d_vec, "load double");
|
|
83
|
+
#endif
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
void test_store()
|
|
87
|
+
{
|
|
88
|
+
test_store_impl(i8_vec, "store int8_t");
|
|
89
|
+
test_store_impl(ui8_vec, "store uint8_t");
|
|
90
|
+
test_store_impl(i16_vec, "store int16_t");
|
|
91
|
+
test_store_impl(ui16_vec, "store uint16_t");
|
|
92
|
+
test_store_impl(i32_vec, "store int32_t");
|
|
93
|
+
test_store_impl(ui32_vec, "store uint32_t");
|
|
94
|
+
test_store_impl(i64_vec, "store int64_t");
|
|
95
|
+
test_store_impl(ui64_vec, "store uint64_t");
|
|
96
|
+
test_store_impl(f_vec, "store float");
|
|
97
|
+
#if XSIMD_WITH_NEON64 || !XSIMD_WITH_NEON
|
|
98
|
+
test_store_impl(d_vec, "store double");
|
|
99
|
+
#endif
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
void test_set()
|
|
103
|
+
{
|
|
104
|
+
test_set_bool("set bool");
|
|
105
|
+
test_set_impl<int8_t>("set int8_t");
|
|
106
|
+
test_set_impl<uint8_t>("set uint8_t");
|
|
107
|
+
test_set_impl<int16_t>("set int16_t");
|
|
108
|
+
test_set_impl<uint16_t>("set uint16_t");
|
|
109
|
+
test_set_impl<int32_t>("set int32_t");
|
|
110
|
+
test_set_impl<uint32_t>("set uint32_t");
|
|
111
|
+
test_set_impl<int64_t>("set int64_t");
|
|
112
|
+
test_set_impl<uint64_t>("set uint64_t");
|
|
113
|
+
test_set_impl<float>("set float");
|
|
114
|
+
#if XSIMD_WITH_NEON64 || !XSIMD_WITH_NEON
|
|
115
|
+
test_set_impl<double>("set double");
|
|
116
|
+
#endif
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private:
|
|
120
|
+
template <class V>
|
|
121
|
+
void test_load_impl(const V& v, const std::string& name)
|
|
122
|
+
{
|
|
123
|
+
batch_type b;
|
|
124
|
+
std::copy(v.cbegin(), v.cend(), expected.begin());
|
|
125
|
+
|
|
126
|
+
b = batch_type::load(v.data(), xsimd::unaligned_mode());
|
|
127
|
+
INFO(name, " unaligned");
|
|
128
|
+
CHECK_BATCH_EQ(b, expected);
|
|
129
|
+
|
|
130
|
+
b = batch_type::load(v.data(), xsimd::aligned_mode());
|
|
131
|
+
INFO(name, " aligned");
|
|
132
|
+
CHECK_BATCH_EQ(b, expected);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
template <class V>
|
|
136
|
+
void test_store_impl(const V& v, const std::string& name)
|
|
137
|
+
{
|
|
138
|
+
batch_type b = batch_type::load(v.data(), xsimd::aligned_mode());
|
|
139
|
+
V res(size);
|
|
140
|
+
|
|
141
|
+
bool* b_data = new bool[size];
|
|
142
|
+
|
|
143
|
+
xsimd::store_as(res.data(), b, xsimd::unaligned_mode());
|
|
144
|
+
INFO(name, " unaligned");
|
|
145
|
+
CHECK_VECTOR_EQ(res, v);
|
|
146
|
+
|
|
147
|
+
std::fill(b_data, b_data + size, false);
|
|
148
|
+
batch_bool_type bb = (b == b);
|
|
149
|
+
xsimd::store_as(b_data, bb, xsimd::unaligned_mode());
|
|
150
|
+
INFO(name, " batch_bool unaligned");
|
|
151
|
+
CHECK_UNARY(std::accumulate(b_data, b_data + size, true, std::logical_and<bool>()));
|
|
152
|
+
|
|
153
|
+
xsimd::store_as(res.data(), b, xsimd::aligned_mode());
|
|
154
|
+
INFO(name, " aligned");
|
|
155
|
+
CHECK_VECTOR_EQ(res, v);
|
|
156
|
+
|
|
157
|
+
std::fill(b_data, b_data + size, false);
|
|
158
|
+
bb = (b == b);
|
|
159
|
+
xsimd::store_as(b_data, bb, xsimd::aligned_mode());
|
|
160
|
+
INFO(name, " batch_bool aligned");
|
|
161
|
+
CHECK_UNARY(std::accumulate(b_data, b_data + size, true, std::logical_and<bool>()));
|
|
162
|
+
|
|
163
|
+
delete[] b_data;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
template <class T>
|
|
167
|
+
void test_set_impl(const std::string& name)
|
|
168
|
+
{
|
|
169
|
+
#ifdef __clang__
|
|
170
|
+
#pragma clang diagnostic push
|
|
171
|
+
#pragma clang diagnostic ignored "-Wshorten-64-to-32"
|
|
172
|
+
#endif
|
|
173
|
+
T v = T(1);
|
|
174
|
+
batch_type expected(v);
|
|
175
|
+
batch_type res = xsimd::broadcast<value_type>(v);
|
|
176
|
+
#ifdef __clang__
|
|
177
|
+
#pragma clang diagnostic pop
|
|
178
|
+
#endif
|
|
179
|
+
INFO(name);
|
|
180
|
+
CHECK_BATCH_EQ(res, expected);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
void test_set_bool(const std::string& name)
|
|
184
|
+
{
|
|
185
|
+
bool v = true;
|
|
186
|
+
xsimd::batch_bool<uint8_t, arch_type> expected(v);
|
|
187
|
+
xsimd::batch_bool<uint8_t, arch_type> res = xsimd::broadcast(v);
|
|
188
|
+
INFO(name);
|
|
189
|
+
CHECK_BATCH_EQ(res, expected);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
template <class V>
|
|
193
|
+
void init_test_vector(V& vec)
|
|
194
|
+
{
|
|
195
|
+
vec.resize(size);
|
|
196
|
+
|
|
197
|
+
int min = 0;
|
|
198
|
+
int max = 100;
|
|
199
|
+
|
|
200
|
+
std::default_random_engine generator;
|
|
201
|
+
std::uniform_int_distribution<int> distribution(min, max);
|
|
202
|
+
|
|
203
|
+
auto gen = [&distribution, &generator]()
|
|
204
|
+
{
|
|
205
|
+
return static_cast<value_type>(distribution(generator));
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
std::generate(vec.begin(), vec.end(), gen);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
TEST_CASE_TEMPLATE("[basic api]", B, BATCH_TYPES)
|
|
213
|
+
{
|
|
214
|
+
xsimd_api_test<B> Test;
|
|
215
|
+
SUBCASE("load")
|
|
216
|
+
{
|
|
217
|
+
Test.test_load();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
SUBCASE("store")
|
|
221
|
+
{
|
|
222
|
+
Test.test_store();
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
SUBCASE("set")
|
|
226
|
+
{
|
|
227
|
+
Test.test_set();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
#endif
|