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,48 @@
|
|
|
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_SSE4_2_REGISTER_HPP
|
|
13
|
+
#define XSIMD_SSE4_2_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_sse4_1_register.hpp"
|
|
16
|
+
|
|
17
|
+
#if XSIMD_WITH_SSE4_2
|
|
18
|
+
#include <nmmintrin.h>
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
namespace xsimd
|
|
22
|
+
{
|
|
23
|
+
/**
|
|
24
|
+
* @ingroup architectures
|
|
25
|
+
*
|
|
26
|
+
* SSE4.2 instructions
|
|
27
|
+
*/
|
|
28
|
+
struct sse4_2 : sse4_1
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_SSE4_2; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "sse4.2"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_SSE4_2
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_SSE4_1
|
|
38
|
+
#error "architecture inconsistency: sse4.2 requires sse4.1"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(sse4_2, sse4_1);
|
|
44
|
+
}
|
|
45
|
+
#endif
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
#endif
|
|
@@ -0,0 +1,48 @@
|
|
|
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_SSSE3_REGISTER_HPP
|
|
13
|
+
#define XSIMD_SSSE3_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_sse3_register.hpp"
|
|
16
|
+
|
|
17
|
+
#if XSIMD_WITH_SSSE3
|
|
18
|
+
#include <tmmintrin.h>
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
namespace xsimd
|
|
22
|
+
{
|
|
23
|
+
/**
|
|
24
|
+
* @ingroup architectures
|
|
25
|
+
*
|
|
26
|
+
* SSSE3 instructions
|
|
27
|
+
*/
|
|
28
|
+
struct ssse3 : sse3
|
|
29
|
+
{
|
|
30
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_SSSE3; }
|
|
31
|
+
static constexpr bool available() noexcept { return true; }
|
|
32
|
+
static constexpr char const* name() noexcept { return "ssse3"; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#if XSIMD_WITH_SSSE3
|
|
36
|
+
|
|
37
|
+
#if !XSIMD_WITH_SSE3
|
|
38
|
+
#error "architecture inconsistency: ssse3 requires sse3"
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
namespace types
|
|
42
|
+
{
|
|
43
|
+
XSIMD_DECLARE_SIMD_REGISTER_ALIAS(ssse3, sse3);
|
|
44
|
+
}
|
|
45
|
+
#endif
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
#endif
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
* Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
|
|
3
|
+
* Martin Renou *
|
|
4
|
+
* Copyright (c) QuantStack *
|
|
5
|
+
* Copyright (c) Serge Guelton *
|
|
6
|
+
* Copyright (c) Yibo Cai *
|
|
7
|
+
* *
|
|
8
|
+
* Distributed under the terms of the BSD 3-Clause License. *
|
|
9
|
+
* *
|
|
10
|
+
* The full license is in the file LICENSE, distributed with this software. *
|
|
11
|
+
****************************************************************************/
|
|
12
|
+
|
|
13
|
+
#ifndef XSIMD_SVE_REGISTER_HPP
|
|
14
|
+
#define XSIMD_SVE_REGISTER_HPP
|
|
15
|
+
|
|
16
|
+
#include "xsimd_common_arch.hpp"
|
|
17
|
+
#include "xsimd_register.hpp"
|
|
18
|
+
|
|
19
|
+
#if XSIMD_WITH_SVE
|
|
20
|
+
#include <arm_sve.h>
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
namespace xsimd
|
|
24
|
+
{
|
|
25
|
+
namespace detail
|
|
26
|
+
{
|
|
27
|
+
/**
|
|
28
|
+
* @ingroup architectures
|
|
29
|
+
*
|
|
30
|
+
* SVE instructions (fixed vector size) for arm64
|
|
31
|
+
*/
|
|
32
|
+
template <size_t Width>
|
|
33
|
+
struct sve : xsimd::common
|
|
34
|
+
{
|
|
35
|
+
static constexpr bool supported() noexcept { return Width == XSIMD_SVE_BITS; }
|
|
36
|
+
static constexpr bool available() noexcept { return true; }
|
|
37
|
+
static constexpr bool requires_alignment() noexcept { return true; }
|
|
38
|
+
static constexpr std::size_t alignment() noexcept { return 16; }
|
|
39
|
+
static constexpr char const* name() noexcept { return "arm64+sve"; }
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
#if XSIMD_WITH_SVE
|
|
44
|
+
|
|
45
|
+
using sve = detail::sve<__ARM_FEATURE_SVE_BITS>;
|
|
46
|
+
|
|
47
|
+
namespace types
|
|
48
|
+
{
|
|
49
|
+
namespace detail
|
|
50
|
+
{
|
|
51
|
+
// define fixed size alias per SVE sizeless type
|
|
52
|
+
#define SVE_TO_FIXED_SIZE(ty) ty __attribute__((arm_sve_vector_bits(__ARM_FEATURE_SVE_BITS)))
|
|
53
|
+
using sve_int8_t = SVE_TO_FIXED_SIZE(svint8_t);
|
|
54
|
+
using sve_uint8_t = SVE_TO_FIXED_SIZE(svuint8_t);
|
|
55
|
+
using sve_int16_t = SVE_TO_FIXED_SIZE(svint16_t);
|
|
56
|
+
using sve_uint16_t = SVE_TO_FIXED_SIZE(svuint16_t);
|
|
57
|
+
using sve_int32_t = SVE_TO_FIXED_SIZE(svint32_t);
|
|
58
|
+
using sve_uint32_t = SVE_TO_FIXED_SIZE(svuint32_t);
|
|
59
|
+
using sve_int64_t = SVE_TO_FIXED_SIZE(svint64_t);
|
|
60
|
+
using sve_uint64_t = SVE_TO_FIXED_SIZE(svuint64_t);
|
|
61
|
+
using sve_float32_t = SVE_TO_FIXED_SIZE(svfloat32_t);
|
|
62
|
+
using sve_float64_t = SVE_TO_FIXED_SIZE(svfloat64_t);
|
|
63
|
+
using sve_bool_t = SVE_TO_FIXED_SIZE(svbool_t);
|
|
64
|
+
#undef SVE_TO_FIXED_SIZE
|
|
65
|
+
|
|
66
|
+
template <size_t S>
|
|
67
|
+
struct sve_vector_type_impl;
|
|
68
|
+
|
|
69
|
+
template <>
|
|
70
|
+
struct sve_vector_type_impl<8>
|
|
71
|
+
{
|
|
72
|
+
using signed_type = sve_int8_t;
|
|
73
|
+
using unsigned_type = sve_uint8_t;
|
|
74
|
+
using floating_point_type = void;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
template <>
|
|
78
|
+
struct sve_vector_type_impl<16>
|
|
79
|
+
{
|
|
80
|
+
using signed_type = sve_int16_t;
|
|
81
|
+
using unsigned_type = sve_uint16_t;
|
|
82
|
+
using floating_point_type = void;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
template <>
|
|
86
|
+
struct sve_vector_type_impl<32>
|
|
87
|
+
{
|
|
88
|
+
using signed_type = sve_int32_t;
|
|
89
|
+
using unsigned_type = sve_uint32_t;
|
|
90
|
+
using floating_point_type = sve_float32_t;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
template <>
|
|
94
|
+
struct sve_vector_type_impl<64>
|
|
95
|
+
{
|
|
96
|
+
using signed_type = sve_int64_t;
|
|
97
|
+
using unsigned_type = sve_uint64_t;
|
|
98
|
+
using floating_point_type = sve_float64_t;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
template <class T>
|
|
102
|
+
using signed_int_sve_vector_type = typename sve_vector_type_impl<8 * sizeof(T)>::signed_type;
|
|
103
|
+
|
|
104
|
+
template <class T>
|
|
105
|
+
using unsigned_int_sve_vector_type = typename sve_vector_type_impl<8 * sizeof(T)>::unsigned_type;
|
|
106
|
+
|
|
107
|
+
template <class T>
|
|
108
|
+
using floating_point_sve_vector_type = typename sve_vector_type_impl<8 * sizeof(T)>::floating_point_type;
|
|
109
|
+
|
|
110
|
+
template <class T>
|
|
111
|
+
using signed_int_or_floating_point_sve_vector_type = typename std::conditional<std::is_floating_point<T>::value,
|
|
112
|
+
floating_point_sve_vector_type<T>,
|
|
113
|
+
signed_int_sve_vector_type<T>>::type;
|
|
114
|
+
|
|
115
|
+
template <class T>
|
|
116
|
+
using sve_vector_type = typename std::conditional<std::is_signed<T>::value,
|
|
117
|
+
signed_int_or_floating_point_sve_vector_type<T>,
|
|
118
|
+
unsigned_int_sve_vector_type<T>>::type;
|
|
119
|
+
} // namespace detail
|
|
120
|
+
|
|
121
|
+
XSIMD_DECLARE_SIMD_REGISTER(signed char, sve, detail::sve_vector_type<signed char>);
|
|
122
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned char, sve, detail::sve_vector_type<unsigned char>);
|
|
123
|
+
XSIMD_DECLARE_SIMD_REGISTER(char, sve, detail::sve_vector_type<char>);
|
|
124
|
+
XSIMD_DECLARE_SIMD_REGISTER(short, sve, detail::sve_vector_type<short>);
|
|
125
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned short, sve, detail::sve_vector_type<unsigned short>);
|
|
126
|
+
XSIMD_DECLARE_SIMD_REGISTER(int, sve, detail::sve_vector_type<int>);
|
|
127
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned int, sve, detail::sve_vector_type<unsigned int>);
|
|
128
|
+
XSIMD_DECLARE_SIMD_REGISTER(long int, sve, detail::sve_vector_type<long int>);
|
|
129
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned long int, sve, detail::sve_vector_type<unsigned long int>);
|
|
130
|
+
XSIMD_DECLARE_SIMD_REGISTER(long long int, sve, detail::sve_vector_type<long long int>);
|
|
131
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned long long int, sve, detail::sve_vector_type<unsigned long long int>);
|
|
132
|
+
XSIMD_DECLARE_SIMD_REGISTER(float, sve, detail::sve_vector_type<float>);
|
|
133
|
+
XSIMD_DECLARE_SIMD_REGISTER(double, sve, detail::sve_vector_type<double>);
|
|
134
|
+
|
|
135
|
+
namespace detail
|
|
136
|
+
{
|
|
137
|
+
struct sve_bool_simd_register
|
|
138
|
+
{
|
|
139
|
+
using register_type = sve_bool_t;
|
|
140
|
+
register_type data;
|
|
141
|
+
operator register_type() const noexcept { return data; }
|
|
142
|
+
};
|
|
143
|
+
} // namespace detail
|
|
144
|
+
|
|
145
|
+
template <class T>
|
|
146
|
+
struct get_bool_simd_register<T, sve>
|
|
147
|
+
{
|
|
148
|
+
using type = detail::sve_bool_simd_register;
|
|
149
|
+
};
|
|
150
|
+
} // namespace types
|
|
151
|
+
#else
|
|
152
|
+
using sve = detail::sve<0xFFFFFFFF>;
|
|
153
|
+
#endif
|
|
154
|
+
} // namespace xsimd
|
|
155
|
+
|
|
156
|
+
#endif
|
|
@@ -0,0 +1,337 @@
|
|
|
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_TRAITS_HPP
|
|
13
|
+
#define XSIMD_TRAITS_HPP
|
|
14
|
+
|
|
15
|
+
#include <type_traits>
|
|
16
|
+
|
|
17
|
+
#include "xsimd_batch.hpp"
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* high level type traits
|
|
21
|
+
*
|
|
22
|
+
* @defgroup batch_traits Type traits
|
|
23
|
+
*
|
|
24
|
+
**/
|
|
25
|
+
|
|
26
|
+
namespace xsimd
|
|
27
|
+
{
|
|
28
|
+
|
|
29
|
+
/**************************************
|
|
30
|
+
* simd_traits and revert_simd_traits *
|
|
31
|
+
**************************************/
|
|
32
|
+
|
|
33
|
+
template <class T, class A = default_arch>
|
|
34
|
+
struct has_simd_register : types::has_simd_register<T, A>
|
|
35
|
+
{
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
template <class T, class A>
|
|
39
|
+
struct has_simd_register<std::complex<T>, A> : has_simd_register<T, A>
|
|
40
|
+
{
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
namespace detail
|
|
44
|
+
{
|
|
45
|
+
template <class T, bool>
|
|
46
|
+
struct simd_traits_impl;
|
|
47
|
+
|
|
48
|
+
template <class T>
|
|
49
|
+
struct simd_traits_impl<T, false>
|
|
50
|
+
{
|
|
51
|
+
using type = T;
|
|
52
|
+
using bool_type = bool;
|
|
53
|
+
static constexpr size_t size = 1;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
#if __cplusplus < 201703L
|
|
57
|
+
template <class T>
|
|
58
|
+
constexpr size_t simd_traits_impl<T, false>::size;
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
template <class T>
|
|
62
|
+
struct simd_traits_impl<T, true>
|
|
63
|
+
{
|
|
64
|
+
using type = batch<T>;
|
|
65
|
+
using bool_type = typename type::batch_bool_type;
|
|
66
|
+
static constexpr size_t size = type::size;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
#if __cplusplus < 201703L
|
|
70
|
+
template <class T>
|
|
71
|
+
constexpr size_t simd_traits_impl<T, true>::size;
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
template <class T, class A>
|
|
75
|
+
struct static_check_supported_config_emitter
|
|
76
|
+
{
|
|
77
|
+
|
|
78
|
+
static_assert(A::supported(),
|
|
79
|
+
"usage of batch type with unsupported architecture");
|
|
80
|
+
static_assert(!A::supported() || xsimd::has_simd_register<T, A>::value,
|
|
81
|
+
"usage of batch type with unsupported type");
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
template <class A>
|
|
85
|
+
struct static_check_supported_config_emitter<bool, A> : static_check_supported_config_emitter<xsimd::as_unsigned_integer_t<bool>, A>
|
|
86
|
+
{
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
template <class T, class A>
|
|
90
|
+
struct static_check_supported_config_emitter<std::complex<T>, A> : static_check_supported_config_emitter<T, A>
|
|
91
|
+
{
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
#ifdef XSIMD_ENABLE_XTL_COMPLEX
|
|
95
|
+
template <class T, class A, bool i3ec>
|
|
96
|
+
struct static_check_supported_config_emitter<xtl::xcomplex<T, T, i3ec>, A> : static_check_supported_config_emitter<T, A>
|
|
97
|
+
{
|
|
98
|
+
};
|
|
99
|
+
#endif
|
|
100
|
+
|
|
101
|
+
// consistency checker
|
|
102
|
+
template <class T, class A>
|
|
103
|
+
XSIMD_INLINE void static_check_supported_config()
|
|
104
|
+
{
|
|
105
|
+
(void)static_check_supported_config_emitter<T, A>();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
template <class T>
|
|
110
|
+
struct simd_traits : detail::simd_traits_impl<T, xsimd::has_simd_register<T>::value>
|
|
111
|
+
{
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
template <class T>
|
|
115
|
+
struct simd_traits<std::complex<T>>
|
|
116
|
+
: detail::simd_traits_impl<std::complex<T>, xsimd::has_simd_register<T>::value>
|
|
117
|
+
{
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
#ifdef XSIMD_ENABLE_XTL_COMPLEX
|
|
121
|
+
template <class T, bool i3ec>
|
|
122
|
+
struct simd_traits<xtl::xcomplex<T, T, i3ec>>
|
|
123
|
+
: detail::simd_traits_impl<std::complex<T>, xsimd::has_simd_register<T>::value>
|
|
124
|
+
{
|
|
125
|
+
};
|
|
126
|
+
#endif
|
|
127
|
+
|
|
128
|
+
template <class T>
|
|
129
|
+
struct revert_simd_traits
|
|
130
|
+
{
|
|
131
|
+
using type = T;
|
|
132
|
+
static constexpr size_t size = simd_traits<type>::size;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
#if __cplusplus < 201703L
|
|
136
|
+
template <class T>
|
|
137
|
+
constexpr size_t revert_simd_traits<T>::size;
|
|
138
|
+
#endif
|
|
139
|
+
|
|
140
|
+
template <class T>
|
|
141
|
+
struct revert_simd_traits<batch<T>>
|
|
142
|
+
{
|
|
143
|
+
using type = T;
|
|
144
|
+
static constexpr size_t size = batch<T>::size;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
#if __cplusplus < 201703L
|
|
148
|
+
template <class T>
|
|
149
|
+
constexpr size_t revert_simd_traits<batch<T>>::size;
|
|
150
|
+
#endif
|
|
151
|
+
|
|
152
|
+
template <class T>
|
|
153
|
+
using simd_type = typename simd_traits<T>::type;
|
|
154
|
+
|
|
155
|
+
template <class T>
|
|
156
|
+
using simd_bool_type = typename simd_traits<T>::bool_type;
|
|
157
|
+
|
|
158
|
+
template <class T>
|
|
159
|
+
using revert_simd_type = typename revert_simd_traits<T>::type;
|
|
160
|
+
|
|
161
|
+
/********************
|
|
162
|
+
* simd_return_type *
|
|
163
|
+
********************/
|
|
164
|
+
|
|
165
|
+
namespace detail
|
|
166
|
+
{
|
|
167
|
+
template <class T1, class T2>
|
|
168
|
+
struct simd_condition
|
|
169
|
+
{
|
|
170
|
+
static constexpr bool value = (std::is_same<T1, T2>::value && !std::is_same<T1, bool>::value) || (std::is_same<T1, bool>::value && !std::is_same<T2, bool>::value) || std::is_same<T1, float>::value || std::is_same<T1, double>::value || std::is_same<T1, int8_t>::value || std::is_same<T1, uint8_t>::value || std::is_same<T1, int16_t>::value || std::is_same<T1, uint16_t>::value || std::is_same<T1, int32_t>::value || std::is_same<T1, uint32_t>::value || std::is_same<T1, int64_t>::value || std::is_same<T1, uint64_t>::value || std::is_same<T1, char>::value || detail::is_complex<T1>::value;
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
template <class T1, class T2, class A>
|
|
174
|
+
struct simd_return_type_impl
|
|
175
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<T2, A>>
|
|
176
|
+
{
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
template <class T2, class A>
|
|
180
|
+
struct simd_return_type_impl<bool, T2, A>
|
|
181
|
+
: std::enable_if<simd_condition<bool, T2>::value, batch_bool<T2, A>>
|
|
182
|
+
{
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
template <class T2, class A>
|
|
186
|
+
struct simd_return_type_impl<bool, std::complex<T2>, A>
|
|
187
|
+
: std::enable_if<simd_condition<bool, T2>::value, batch_bool<T2, A>>
|
|
188
|
+
{
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
template <class T1, class T2, class A>
|
|
192
|
+
struct simd_return_type_impl<std::complex<T1>, T2, A>
|
|
193
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
|
|
194
|
+
{
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
template <class T1, class T2, class A>
|
|
198
|
+
struct simd_return_type_impl<std::complex<T1>, std::complex<T2>, A>
|
|
199
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
|
|
200
|
+
{
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
#ifdef XSIMD_ENABLE_XTL_COMPLEX
|
|
204
|
+
template <class T1, class T2, bool I3EC, class A>
|
|
205
|
+
struct simd_return_type_impl<xtl::xcomplex<T1, T1, I3EC>, T2, A>
|
|
206
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
|
|
207
|
+
{
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
template <class T1, class T2, bool I3EC, class A>
|
|
211
|
+
struct simd_return_type_impl<xtl::xcomplex<T1, T1, I3EC>, std::complex<T2>, A>
|
|
212
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
|
|
213
|
+
{
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
template <class T1, class T2, bool I3EC, class A>
|
|
217
|
+
struct simd_return_type_impl<xtl::xcomplex<T1, T1, I3EC>, xtl::xcomplex<T2, T2, I3EC>, A>
|
|
218
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
|
|
219
|
+
{
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
template <class T1, class T2, bool I3EC, class A>
|
|
223
|
+
struct simd_return_type_impl<std::complex<T1>, xtl::xcomplex<T2, T2, I3EC>, A>
|
|
224
|
+
: std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
|
|
225
|
+
{
|
|
226
|
+
};
|
|
227
|
+
#endif
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
template <class T1, class T2, class A = default_arch>
|
|
231
|
+
using simd_return_type = typename detail::simd_return_type_impl<T1, T2, A>::type;
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* @ingroup batch_traits
|
|
235
|
+
*
|
|
236
|
+
* type traits that inherits from @c std::true_type for @c batch<...> types and from
|
|
237
|
+
* @c std::false_type otherwise.
|
|
238
|
+
*
|
|
239
|
+
* @tparam T type to analyze.
|
|
240
|
+
*/
|
|
241
|
+
template <class T>
|
|
242
|
+
struct is_batch;
|
|
243
|
+
|
|
244
|
+
template <class T>
|
|
245
|
+
struct is_batch : std::false_type
|
|
246
|
+
{
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
template <class T, class A>
|
|
250
|
+
struct is_batch<batch<T, A>> : std::true_type
|
|
251
|
+
{
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* @ingroup batch_traits
|
|
256
|
+
*
|
|
257
|
+
* type traits that inherits from @c std::true_type for @c batch_bool<...> types and from
|
|
258
|
+
* @c std::false_type otherwise.
|
|
259
|
+
*
|
|
260
|
+
* @tparam T type to analyze.
|
|
261
|
+
*/
|
|
262
|
+
|
|
263
|
+
template <class T>
|
|
264
|
+
struct is_batch_bool : std::false_type
|
|
265
|
+
{
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
template <class T, class A>
|
|
269
|
+
struct is_batch_bool<batch_bool<T, A>> : std::true_type
|
|
270
|
+
{
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* @ingroup batch_traits
|
|
275
|
+
*
|
|
276
|
+
* type traits that inherits from @c std::true_type for @c batch<std::complex<...>>
|
|
277
|
+
* types and from @c std::false_type otherwise.
|
|
278
|
+
*
|
|
279
|
+
* @tparam T type to analyze.
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
template <class T>
|
|
283
|
+
struct is_batch_complex : std::false_type
|
|
284
|
+
{
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
template <class T, class A>
|
|
288
|
+
struct is_batch_complex<batch<std::complex<T>, A>> : std::true_type
|
|
289
|
+
{
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* @ingroup batch_traits
|
|
294
|
+
*
|
|
295
|
+
* type traits whose @c type field is set to @c T::value_type if @c
|
|
296
|
+
* is_batch<T>::value and to @c T otherwise.
|
|
297
|
+
*
|
|
298
|
+
* @tparam T type to analyze.
|
|
299
|
+
*/
|
|
300
|
+
template <class T>
|
|
301
|
+
struct scalar_type
|
|
302
|
+
{
|
|
303
|
+
using type = T;
|
|
304
|
+
};
|
|
305
|
+
template <class T, class A>
|
|
306
|
+
struct scalar_type<batch<T, A>>
|
|
307
|
+
{
|
|
308
|
+
using type = T;
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
template <class T>
|
|
312
|
+
using scalar_type_t = typename scalar_type<T>::type;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* @ingroup batch_traits
|
|
316
|
+
*
|
|
317
|
+
* type traits whose @c type field is set to @c T::value_type if @c
|
|
318
|
+
* is_batch_bool<T>::value and to @c bool otherwise.
|
|
319
|
+
*
|
|
320
|
+
* @tparam T type to analyze.
|
|
321
|
+
*/
|
|
322
|
+
template <class T>
|
|
323
|
+
struct mask_type
|
|
324
|
+
{
|
|
325
|
+
using type = bool;
|
|
326
|
+
};
|
|
327
|
+
template <class T, class A>
|
|
328
|
+
struct mask_type<batch<T, A>>
|
|
329
|
+
{
|
|
330
|
+
using type = typename batch<T, A>::batch_bool_type;
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
template <class T>
|
|
334
|
+
using mask_type_t = typename mask_type<T>::type;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
#endif
|