sequenzo 0.1.21__cp310-cp310-macosx_11_0_arm64.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.
Potentially problematic release.
This version of sequenzo might be problematic. Click here for more details.
- sequenzo/__init__.py +240 -0
- sequenzo/big_data/__init__.py +12 -0
- sequenzo/big_data/clara/__init__.py +26 -0
- sequenzo/big_data/clara/clara.py +467 -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 +196 -0
- sequenzo/clustering/__init__.py +30 -0
- sequenzo/clustering/clustering_c_code.cpython-310-darwin.so +0 -0
- sequenzo/clustering/hierarchical_clustering.py +1380 -0
- sequenzo/clustering/src/KMedoid.cpp +262 -0
- sequenzo/clustering/src/PAM.cpp +236 -0
- sequenzo/clustering/src/PAMonce.cpp +234 -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 +20 -0
- sequenzo/data_preprocessing/helpers.py +256 -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/mvad.csv +713 -0
- sequenzo/datasets/pairfam_family.csv +1867 -0
- sequenzo/datasets/polyadic_samplec1.csv +61 -0
- sequenzo/datasets/polyadic_samplep1.csv +61 -0
- sequenzo/datasets/polyadic_seqc1.csv +61 -0
- sequenzo/datasets/polyadic_seqp1.csv +61 -0
- sequenzo/define_sequence_data.py +609 -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 +702 -0
- sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +241 -0
- sequenzo/dissimilarity_measures/src/DHDdistance.cpp +148 -0
- sequenzo/dissimilarity_measures/src/LCPdistance.cpp +114 -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 +34 -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 +431 -0
- sequenzo/multidomain/combt.py +519 -0
- sequenzo/multidomain/dat.py +89 -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 +43 -0
- sequenzo/prefix_tree/individual_level_indicators.py +1274 -0
- sequenzo/prefix_tree/system_level_indicators.py +465 -0
- sequenzo/prefix_tree/utils.py +54 -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 +48 -0
- sequenzo/suffix_tree/individual_level_indicators.py +1638 -0
- sequenzo/suffix_tree/system_level_indicators.py +456 -0
- sequenzo/suffix_tree/utils.py +56 -0
- sequenzo/visualization/__init__.py +29 -0
- sequenzo/visualization/plot_mean_time.py +194 -0
- sequenzo/visualization/plot_modal_state.py +276 -0
- sequenzo/visualization/plot_most_frequent_sequences.py +147 -0
- sequenzo/visualization/plot_relative_frequency.py +404 -0
- sequenzo/visualization/plot_sequence_index.py +937 -0
- sequenzo/visualization/plot_single_medoid.py +153 -0
- sequenzo/visualization/plot_state_distribution.py +613 -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.21.dist-info/METADATA +308 -0
- sequenzo-0.1.21.dist-info/RECORD +254 -0
- sequenzo-0.1.21.dist-info/WHEEL +5 -0
- sequenzo-0.1.21.dist-info/licenses/LICENSE +28 -0
- sequenzo-0.1.21.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,240 @@
|
|
|
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_ARCH_HPP
|
|
13
|
+
#define XSIMD_ARCH_HPP
|
|
14
|
+
|
|
15
|
+
#include <initializer_list>
|
|
16
|
+
#include <type_traits>
|
|
17
|
+
#include <utility>
|
|
18
|
+
|
|
19
|
+
#include "../types/xsimd_all_registers.hpp"
|
|
20
|
+
#include "./xsimd_config.hpp"
|
|
21
|
+
#include "./xsimd_cpuid.hpp"
|
|
22
|
+
|
|
23
|
+
namespace xsimd
|
|
24
|
+
{
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @ingroup architectures
|
|
28
|
+
*
|
|
29
|
+
* Dummy architectures that only appears in a list of architecture when no
|
|
30
|
+
* other architecture has been detected.
|
|
31
|
+
*/
|
|
32
|
+
struct unavailable
|
|
33
|
+
{
|
|
34
|
+
static constexpr bool supported() noexcept { return false; }
|
|
35
|
+
static constexpr bool available() noexcept { return false; }
|
|
36
|
+
static constexpr std::size_t alignment() noexcept { return 0; }
|
|
37
|
+
static constexpr bool requires_alignment() noexcept { return false; }
|
|
38
|
+
static constexpr char const* name() noexcept { return "<none>"; }
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
namespace detail
|
|
42
|
+
{
|
|
43
|
+
// Checks whether T appears in Tys.
|
|
44
|
+
template <class T, class... Tys>
|
|
45
|
+
struct contains;
|
|
46
|
+
|
|
47
|
+
template <class T>
|
|
48
|
+
struct contains<T> : std::false_type
|
|
49
|
+
{
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
template <class T, class Ty, class... Tys>
|
|
53
|
+
struct contains<T, Ty, Tys...>
|
|
54
|
+
: std::conditional<std::is_same<Ty, T>::value, std::true_type,
|
|
55
|
+
contains<T, Tys...>>::type
|
|
56
|
+
{
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
template <typename T>
|
|
60
|
+
XSIMD_INLINE constexpr T max_of(T value) noexcept
|
|
61
|
+
{
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
template <typename T, typename... Ts>
|
|
66
|
+
XSIMD_INLINE constexpr T max_of(T head0, T head1, Ts... tail) noexcept
|
|
67
|
+
{
|
|
68
|
+
return max_of((head0 > head1 ? head0 : head1), tail...);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
template <typename... Ts>
|
|
72
|
+
struct head;
|
|
73
|
+
|
|
74
|
+
template <typename T, typename... Ts>
|
|
75
|
+
struct head<T, Ts...>
|
|
76
|
+
{
|
|
77
|
+
using type = T;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
template <>
|
|
81
|
+
struct head<>
|
|
82
|
+
{
|
|
83
|
+
using type = unavailable;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
} // namespace detail
|
|
87
|
+
|
|
88
|
+
// An arch_list is a list of architectures.
|
|
89
|
+
template <class... Archs>
|
|
90
|
+
struct arch_list
|
|
91
|
+
{
|
|
92
|
+
using best = typename detail::head<Archs...>::type;
|
|
93
|
+
|
|
94
|
+
template <class Arch>
|
|
95
|
+
using add = arch_list<Archs..., Arch>;
|
|
96
|
+
|
|
97
|
+
template <class... OtherArchs>
|
|
98
|
+
using extend = arch_list<Archs..., OtherArchs...>;
|
|
99
|
+
|
|
100
|
+
template <class Arch>
|
|
101
|
+
static constexpr bool contains() noexcept
|
|
102
|
+
{
|
|
103
|
+
return detail::contains<Arch, Archs...>::value;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
template <class F>
|
|
107
|
+
static XSIMD_INLINE void for_each(F&& f) noexcept
|
|
108
|
+
{
|
|
109
|
+
(void)std::initializer_list<bool> { (f(Archs {}), true)... };
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
static constexpr std::size_t alignment() noexcept
|
|
113
|
+
{
|
|
114
|
+
// all alignments are a power of two
|
|
115
|
+
return detail::max_of(Archs::alignment()..., static_cast<size_t>(0));
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
namespace detail
|
|
120
|
+
{
|
|
121
|
+
|
|
122
|
+
// Filter archlists Archs, picking only supported archs and adding
|
|
123
|
+
// them to L.
|
|
124
|
+
template <class L, class... Archs>
|
|
125
|
+
struct supported_helper;
|
|
126
|
+
|
|
127
|
+
template <class L>
|
|
128
|
+
struct supported_helper<L, arch_list<>>
|
|
129
|
+
{
|
|
130
|
+
using type = L;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
template <class L, class Arch, class... Archs>
|
|
134
|
+
struct supported_helper<L, arch_list<Arch, Archs...>>
|
|
135
|
+
: supported_helper<
|
|
136
|
+
typename std::conditional<Arch::supported(),
|
|
137
|
+
typename L::template add<Arch>, L>::type,
|
|
138
|
+
arch_list<Archs...>>
|
|
139
|
+
{
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
template <class... Archs>
|
|
143
|
+
struct supported : supported_helper<arch_list<>, Archs...>
|
|
144
|
+
{
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// Joins all arch_list Archs in a single arch_list.
|
|
148
|
+
template <class... Archs>
|
|
149
|
+
struct join;
|
|
150
|
+
|
|
151
|
+
template <class Arch>
|
|
152
|
+
struct join<Arch>
|
|
153
|
+
{
|
|
154
|
+
using type = Arch;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
template <class Arch, class... Archs, class... Args>
|
|
158
|
+
struct join<Arch, arch_list<Archs...>, Args...>
|
|
159
|
+
: join<typename Arch::template extend<Archs...>, Args...>
|
|
160
|
+
{
|
|
161
|
+
};
|
|
162
|
+
} // namespace detail
|
|
163
|
+
|
|
164
|
+
using all_x86_architectures = arch_list<
|
|
165
|
+
avx512vnni<avx512vbmi2>, avx512vbmi2, avx512vbmi, avx512ifma, avx512pf, avx512vnni<avx512bw>, avx512bw, avx512er, avx512dq, avx512cd, avx512f,
|
|
166
|
+
avxvnni, fma3<avx2>, avx2, fma3<avx>, avx, fma4, fma3<sse4_2>,
|
|
167
|
+
sse4_2, sse4_1, /*sse4a,*/ ssse3, sse3, sse2>;
|
|
168
|
+
|
|
169
|
+
using all_sve_architectures = arch_list<detail::sve<512>, detail::sve<256>, detail::sve<128>>;
|
|
170
|
+
using all_rvv_architectures = arch_list<detail::rvv<512>, detail::rvv<256>, detail::rvv<128>>;
|
|
171
|
+
using all_arm_architectures = typename detail::join<all_sve_architectures, arch_list<i8mm<neon64>, neon64, neon>>::type;
|
|
172
|
+
using all_power_architectures = arch_list<vsx>;
|
|
173
|
+
using all_riscv_architectures = all_rvv_architectures;
|
|
174
|
+
using all_wasm_architectures = arch_list<wasm>;
|
|
175
|
+
using all_architectures = typename detail::join<all_power_architectures, all_riscv_architectures, all_wasm_architectures, all_arm_architectures, all_x86_architectures>::type;
|
|
176
|
+
|
|
177
|
+
using supported_architectures = typename detail::supported<all_architectures>::type;
|
|
178
|
+
|
|
179
|
+
using x86_arch = typename detail::supported<all_x86_architectures>::type::best;
|
|
180
|
+
using arm_arch = typename detail::supported<all_arm_architectures>::type::best;
|
|
181
|
+
using power_arch = typename detail::supported<all_power_architectures>::type::best;
|
|
182
|
+
using riscv_arch = typename detail::supported<all_riscv_architectures>::type::best;
|
|
183
|
+
using best_arch = typename supported_architectures::best;
|
|
184
|
+
|
|
185
|
+
#ifdef XSIMD_DEFAULT_ARCH
|
|
186
|
+
using default_arch = XSIMD_DEFAULT_ARCH;
|
|
187
|
+
#else
|
|
188
|
+
using default_arch = best_arch;
|
|
189
|
+
#endif
|
|
190
|
+
|
|
191
|
+
namespace detail
|
|
192
|
+
{
|
|
193
|
+
template <class F, class ArchList>
|
|
194
|
+
class dispatcher
|
|
195
|
+
{
|
|
196
|
+
|
|
197
|
+
const decltype(available_architectures()) availables_archs;
|
|
198
|
+
F functor;
|
|
199
|
+
|
|
200
|
+
template <class Arch, class... Tys>
|
|
201
|
+
XSIMD_INLINE auto walk_archs(arch_list<Arch>, Tys&&... args) noexcept -> decltype(functor(Arch {}, std::forward<Tys>(args)...))
|
|
202
|
+
{
|
|
203
|
+
assert(Arch::available() && "At least one arch must be supported during dispatch");
|
|
204
|
+
return functor(Arch {}, std::forward<Tys>(args)...);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
template <class Arch, class ArchNext, class... Archs, class... Tys>
|
|
208
|
+
XSIMD_INLINE auto walk_archs(arch_list<Arch, ArchNext, Archs...>, Tys&&... args) noexcept -> decltype(functor(Arch {}, std::forward<Tys>(args)...))
|
|
209
|
+
{
|
|
210
|
+
if (availables_archs.has(Arch {}))
|
|
211
|
+
return functor(Arch {}, std::forward<Tys>(args)...);
|
|
212
|
+
else
|
|
213
|
+
return walk_archs(arch_list<ArchNext, Archs...> {}, std::forward<Tys>(args)...);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
public:
|
|
217
|
+
XSIMD_INLINE dispatcher(F f) noexcept
|
|
218
|
+
: availables_archs(available_architectures())
|
|
219
|
+
, functor(f)
|
|
220
|
+
{
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
template <class... Tys>
|
|
224
|
+
XSIMD_INLINE auto operator()(Tys&&... args) noexcept -> decltype(functor(default_arch {}, std::forward<Tys>(args)...))
|
|
225
|
+
{
|
|
226
|
+
return walk_archs(ArchList {}, std::forward<Tys>(args)...);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Generic function dispatch, à la ifunc
|
|
232
|
+
template <class ArchList = supported_architectures, class F>
|
|
233
|
+
XSIMD_INLINE detail::dispatcher<F, ArchList> dispatch(F&& f) noexcept
|
|
234
|
+
{
|
|
235
|
+
return { std::forward<F>(f) };
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
} // namespace xsimd
|
|
239
|
+
|
|
240
|
+
#endif
|
|
@@ -0,0 +1,484 @@
|
|
|
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_CONFIG_HPP
|
|
13
|
+
#define XSIMD_CONFIG_HPP
|
|
14
|
+
|
|
15
|
+
#define XSIMD_VERSION_MAJOR 13
|
|
16
|
+
#define XSIMD_VERSION_MINOR 2
|
|
17
|
+
#define XSIMD_VERSION_PATCH 0
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* high level free functions
|
|
21
|
+
*
|
|
22
|
+
* @defgroup xsimd_config_macro Instruction Set Detection
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @ingroup xsimd_config_macro
|
|
27
|
+
*
|
|
28
|
+
* Set to 1 if SSE2 is available at compile-time, to 0 otherwise.
|
|
29
|
+
*/
|
|
30
|
+
#ifdef __SSE2__
|
|
31
|
+
#define XSIMD_WITH_SSE2 1
|
|
32
|
+
#else
|
|
33
|
+
#define XSIMD_WITH_SSE2 0
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @ingroup xsimd_config_macro
|
|
38
|
+
*
|
|
39
|
+
* Set to 1 if SSE3 is available at compile-time, to 0 otherwise.
|
|
40
|
+
*/
|
|
41
|
+
#ifdef __SSE3__
|
|
42
|
+
#define XSIMD_WITH_SSE3 1
|
|
43
|
+
#else
|
|
44
|
+
#define XSIMD_WITH_SSE3 0
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @ingroup xsimd_config_macro
|
|
49
|
+
*
|
|
50
|
+
* Set to 1 if SSSE3 is available at compile-time, to 0 otherwise.
|
|
51
|
+
*/
|
|
52
|
+
#ifdef __SSSE3__
|
|
53
|
+
#define XSIMD_WITH_SSSE3 1
|
|
54
|
+
#else
|
|
55
|
+
#define XSIMD_WITH_SSSE3 0
|
|
56
|
+
#endif
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @ingroup xsimd_config_macro
|
|
60
|
+
*
|
|
61
|
+
* Set to 1 if SSE4.1 is available at compile-time, to 0 otherwise.
|
|
62
|
+
*/
|
|
63
|
+
#ifdef __SSE4_1__
|
|
64
|
+
#define XSIMD_WITH_SSE4_1 1
|
|
65
|
+
#else
|
|
66
|
+
#define XSIMD_WITH_SSE4_1 0
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @ingroup xsimd_config_macro
|
|
71
|
+
*
|
|
72
|
+
* Set to 1 if SSE4.2 is available at compile-time, to 0 otherwise.
|
|
73
|
+
*/
|
|
74
|
+
#ifdef __SSE4_2__
|
|
75
|
+
#define XSIMD_WITH_SSE4_2 1
|
|
76
|
+
#else
|
|
77
|
+
#define XSIMD_WITH_SSE4_2 0
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @ingroup xsimd_config_macro
|
|
82
|
+
*
|
|
83
|
+
* Set to 1 if AVX is available at compile-time, to 0 otherwise.
|
|
84
|
+
*/
|
|
85
|
+
#ifdef __AVX__
|
|
86
|
+
#define XSIMD_WITH_AVX 1
|
|
87
|
+
#else
|
|
88
|
+
#define XSIMD_WITH_AVX 0
|
|
89
|
+
#endif
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @ingroup xsimd_config_macro
|
|
93
|
+
*
|
|
94
|
+
* Set to 1 if AVX2 is available at compile-time, to 0 otherwise.
|
|
95
|
+
*/
|
|
96
|
+
#ifdef __AVX2__
|
|
97
|
+
#define XSIMD_WITH_AVX2 1
|
|
98
|
+
#else
|
|
99
|
+
#define XSIMD_WITH_AVX2 0
|
|
100
|
+
#endif
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @ingroup xsimd_config_macro
|
|
104
|
+
*
|
|
105
|
+
* Set to 1 if AVXVNNI is available at compile-time, to 0 otherwise.
|
|
106
|
+
*/
|
|
107
|
+
#ifdef __AVXVNNI__
|
|
108
|
+
#define XSIMD_WITH_AVXVNNI 1
|
|
109
|
+
#else
|
|
110
|
+
#define XSIMD_WITH_AVXVNNI 0
|
|
111
|
+
#endif
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @ingroup xsimd_config_macro
|
|
115
|
+
*
|
|
116
|
+
* Set to 1 if FMA3 for SSE is available at compile-time, to 0 otherwise.
|
|
117
|
+
*/
|
|
118
|
+
#ifdef __FMA__
|
|
119
|
+
|
|
120
|
+
#if defined(__SSE__)
|
|
121
|
+
#ifndef XSIMD_WITH_FMA3_SSE // Leave the opportunity to manually disable it, see #643
|
|
122
|
+
#define XSIMD_WITH_FMA3_SSE 1
|
|
123
|
+
#endif
|
|
124
|
+
#else
|
|
125
|
+
|
|
126
|
+
#if XSIMD_WITH_FMA3_SSE
|
|
127
|
+
#error "Manually set XSIMD_WITH_FMA3_SSE is incompatible with current compiler flags"
|
|
128
|
+
#endif
|
|
129
|
+
|
|
130
|
+
#define XSIMD_WITH_FMA3_SSE 0
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
#else
|
|
134
|
+
|
|
135
|
+
#if XSIMD_WITH_FMA3_SSE
|
|
136
|
+
#error "Manually set XSIMD_WITH_FMA3_SSE is incompatible with current compiler flags"
|
|
137
|
+
#endif
|
|
138
|
+
|
|
139
|
+
#define XSIMD_WITH_FMA3_SSE 0
|
|
140
|
+
#endif
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @ingroup xsimd_config_macro
|
|
144
|
+
*
|
|
145
|
+
* Set to 1 if FMA3 for AVX is available at compile-time, to 0 otherwise.
|
|
146
|
+
*/
|
|
147
|
+
#ifdef __FMA__
|
|
148
|
+
|
|
149
|
+
#if defined(__AVX__)
|
|
150
|
+
#ifndef XSIMD_WITH_FMA3_AVX // Leave the opportunity to manually disable it, see #643
|
|
151
|
+
#define XSIMD_WITH_FMA3_AVX 1
|
|
152
|
+
#endif
|
|
153
|
+
#else
|
|
154
|
+
|
|
155
|
+
#if XSIMD_WITH_FMA3_AVX
|
|
156
|
+
#error "Manually set XSIMD_WITH_FMA3_AVX is incompatible with current compiler flags"
|
|
157
|
+
#endif
|
|
158
|
+
|
|
159
|
+
#define XSIMD_WITH_FMA3_AVX 0
|
|
160
|
+
#endif
|
|
161
|
+
|
|
162
|
+
#if defined(__AVX2__)
|
|
163
|
+
#ifndef XSIMD_WITH_FMA3_AVX2 // Leave the opportunity to manually disable it, see #643
|
|
164
|
+
#define XSIMD_WITH_FMA3_AVX2 1
|
|
165
|
+
#endif
|
|
166
|
+
#else
|
|
167
|
+
|
|
168
|
+
#if XSIMD_WITH_FMA3_AVX2
|
|
169
|
+
#error "Manually set XSIMD_WITH_FMA3_AVX2 is incompatible with current compiler flags"
|
|
170
|
+
#endif
|
|
171
|
+
|
|
172
|
+
#define XSIMD_WITH_FMA3_AVX2 0
|
|
173
|
+
#endif
|
|
174
|
+
|
|
175
|
+
#else
|
|
176
|
+
|
|
177
|
+
#if XSIMD_WITH_FMA3_AVX
|
|
178
|
+
#error "Manually set XSIMD_WITH_FMA3_AVX is incompatible with current compiler flags"
|
|
179
|
+
#endif
|
|
180
|
+
|
|
181
|
+
#if XSIMD_WITH_FMA3_AVX2
|
|
182
|
+
#error "Manually set XSIMD_WITH_FMA3_AVX2 is incompatible with current compiler flags"
|
|
183
|
+
#endif
|
|
184
|
+
|
|
185
|
+
#define XSIMD_WITH_FMA3_AVX 0
|
|
186
|
+
#define XSIMD_WITH_FMA3_AVX2 0
|
|
187
|
+
|
|
188
|
+
#endif
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @ingroup xsimd_config_macro
|
|
192
|
+
*
|
|
193
|
+
* Set to 1 if FMA4 is available at compile-time, to 0 otherwise.
|
|
194
|
+
*/
|
|
195
|
+
#ifdef __FMA4__
|
|
196
|
+
#define XSIMD_WITH_FMA4 1
|
|
197
|
+
#else
|
|
198
|
+
#define XSIMD_WITH_FMA4 0
|
|
199
|
+
#endif
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @ingroup xsimd_config_macro
|
|
203
|
+
*
|
|
204
|
+
* Set to 1 if AVX512F is available at compile-time, to 0 otherwise.
|
|
205
|
+
*/
|
|
206
|
+
#ifdef __AVX512F__
|
|
207
|
+
// AVX512 instructions are supported starting with gcc 6
|
|
208
|
+
// see https://www.gnu.org/software/gcc/gcc-6/changes.html
|
|
209
|
+
// check clang first, newer clang always defines __GNUC__ = 4
|
|
210
|
+
#if defined(__clang__) && __clang_major__ >= 6
|
|
211
|
+
#define XSIMD_WITH_AVX512F 1
|
|
212
|
+
#elif defined(__GNUC__) && __GNUC__ < 6
|
|
213
|
+
#define XSIMD_WITH_AVX512F 0
|
|
214
|
+
#else
|
|
215
|
+
#define XSIMD_WITH_AVX512F 1
|
|
216
|
+
#if __GNUC__ == 6
|
|
217
|
+
#define XSIMD_AVX512_SHIFT_INTRINSICS_IMM_ONLY 1
|
|
218
|
+
#endif
|
|
219
|
+
#endif
|
|
220
|
+
#else
|
|
221
|
+
#define XSIMD_WITH_AVX512F 0
|
|
222
|
+
#endif
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* @ingroup xsimd_config_macro
|
|
226
|
+
*
|
|
227
|
+
* Set to 1 if AVX512CD is available at compile-time, to 0 otherwise.
|
|
228
|
+
*/
|
|
229
|
+
#ifdef __AVX512CD__
|
|
230
|
+
// Avoids repeating the GCC workaround over and over
|
|
231
|
+
#define XSIMD_WITH_AVX512CD XSIMD_WITH_AVX512F
|
|
232
|
+
#else
|
|
233
|
+
#define XSIMD_WITH_AVX512CD 0
|
|
234
|
+
#endif
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @ingroup xsimd_config_macro
|
|
238
|
+
*
|
|
239
|
+
* Set to 1 if AVX512DQ is available at compile-time, to 0 otherwise.
|
|
240
|
+
*/
|
|
241
|
+
#ifdef __AVX512DQ__
|
|
242
|
+
#define XSIMD_WITH_AVX512DQ XSIMD_WITH_AVX512F
|
|
243
|
+
#else
|
|
244
|
+
#define XSIMD_WITH_AVX512DQ 0
|
|
245
|
+
#endif
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* @ingroup xsimd_config_macro
|
|
249
|
+
*
|
|
250
|
+
* Set to 1 if AVX512BW is available at compile-time, to 0 otherwise.
|
|
251
|
+
*/
|
|
252
|
+
#ifdef __AVX512BW__
|
|
253
|
+
#define XSIMD_WITH_AVX512BW XSIMD_WITH_AVX512F
|
|
254
|
+
#else
|
|
255
|
+
#define XSIMD_WITH_AVX512BW 0
|
|
256
|
+
#endif
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* @ingroup xsimd_config_macro
|
|
260
|
+
*
|
|
261
|
+
* Set to 1 if AVX512ER is available at compile-time, to 0 otherwise.
|
|
262
|
+
*/
|
|
263
|
+
#ifdef __AVX512ER__
|
|
264
|
+
#define XSIMD_WITH_AVX512ER XSIMD_WITH_AVX512F
|
|
265
|
+
#else
|
|
266
|
+
#define XSIMD_WITH_AVX512ER 0
|
|
267
|
+
#endif
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* @ingroup xsimd_config_macro
|
|
271
|
+
*
|
|
272
|
+
* Set to 1 if AVX512PF is available at compile-time, to 0 otherwise.
|
|
273
|
+
*/
|
|
274
|
+
#ifdef __AVX512PF__
|
|
275
|
+
#define XSIMD_WITH_AVX512PF XSIMD_WITH_AVX512F
|
|
276
|
+
#else
|
|
277
|
+
#define XSIMD_WITH_AVX512PF 0
|
|
278
|
+
#endif
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* @ingroup xsimd_config_macro
|
|
282
|
+
*
|
|
283
|
+
* Set to 1 if AVX512IFMA is available at compile-time, to 0 otherwise.
|
|
284
|
+
*/
|
|
285
|
+
#ifdef __AVX512IFMA__
|
|
286
|
+
#define XSIMD_WITH_AVX512IFMA XSIMD_WITH_AVX512F
|
|
287
|
+
#else
|
|
288
|
+
#define XSIMD_WITH_AVX512IFMA 0
|
|
289
|
+
#endif
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* @ingroup xsimd_config_macro
|
|
293
|
+
*
|
|
294
|
+
* Set to 1 if AVX512VBMI is available at compile-time, to 0 otherwise.
|
|
295
|
+
*/
|
|
296
|
+
#ifdef __AVX512VBMI__
|
|
297
|
+
#define XSIMD_WITH_AVX512VBMI XSIMD_WITH_AVX512F
|
|
298
|
+
#else
|
|
299
|
+
#define XSIMD_WITH_AVX512VBMI 0
|
|
300
|
+
#endif
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* @ingroup xsimd_config_macro
|
|
304
|
+
*
|
|
305
|
+
* Set to 1 if AVX512VBMI2 is available at compile-time, to 0 otherwise.
|
|
306
|
+
*/
|
|
307
|
+
#ifdef __AVX512VBMI2__
|
|
308
|
+
#define XSIMD_WITH_AVX512VBMI2 XSIMD_WITH_AVX512F
|
|
309
|
+
#else
|
|
310
|
+
#define XSIMD_WITH_AVX512VBMI2 0
|
|
311
|
+
#endif
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* @ingroup xsimd_config_macro
|
|
315
|
+
*
|
|
316
|
+
* Set to 1 if AVX512VNNI is available at compile-time, to 0 otherwise.
|
|
317
|
+
*/
|
|
318
|
+
#ifdef __AVX512VNNI__
|
|
319
|
+
|
|
320
|
+
#if XSIMD_WITH_AVX512VBMI2
|
|
321
|
+
#define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 XSIMD_WITH_AVX512F
|
|
322
|
+
#define XSIMD_WITH_AVX512VNNI_AVX512BW XSIMD_WITH_AVX512F
|
|
323
|
+
#else
|
|
324
|
+
#define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 0
|
|
325
|
+
#define XSIMD_WITH_AVX512VNNI_AVX512BW XSIMD_WITH_AVX512F
|
|
326
|
+
#endif
|
|
327
|
+
|
|
328
|
+
#else
|
|
329
|
+
|
|
330
|
+
#define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 0
|
|
331
|
+
#define XSIMD_WITH_AVX512VNNI_AVX512BW 0
|
|
332
|
+
|
|
333
|
+
#endif
|
|
334
|
+
|
|
335
|
+
#ifdef __ARM_NEON
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* @ingroup xsimd_config_macro
|
|
339
|
+
*
|
|
340
|
+
* Set to 1 if NEON is available at compile-time, to 0 otherwise.
|
|
341
|
+
*/
|
|
342
|
+
#if __ARM_ARCH >= 7
|
|
343
|
+
#define XSIMD_WITH_NEON 1
|
|
344
|
+
#else
|
|
345
|
+
#define XSIMD_WITH_NEON 0
|
|
346
|
+
#endif
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* @ingroup xsimd_config_macro
|
|
350
|
+
*
|
|
351
|
+
* Set to 1 if NEON64 is available at compile-time, to 0 otherwise.
|
|
352
|
+
*/
|
|
353
|
+
#ifdef __aarch64__
|
|
354
|
+
#define XSIMD_WITH_NEON64 1
|
|
355
|
+
#else
|
|
356
|
+
#define XSIMD_WITH_NEON64 0
|
|
357
|
+
#endif
|
|
358
|
+
#else
|
|
359
|
+
#define XSIMD_WITH_NEON 0
|
|
360
|
+
#define XSIMD_WITH_NEON64 0
|
|
361
|
+
#endif
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* @ingroup xsimd_config_macro
|
|
365
|
+
*
|
|
366
|
+
* Set to 1 if i8mm neon64 extension is available at compile-time, to 0 otherwise.
|
|
367
|
+
*/
|
|
368
|
+
#if defined(__ARM_FEATURE_MATMUL_INT8)
|
|
369
|
+
#define XSIMD_WITH_I8MM_NEON64 1
|
|
370
|
+
#else
|
|
371
|
+
#define XSIMD_WITH_I8MM_NEON64 0
|
|
372
|
+
#endif
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* @ingroup xsimd_config_macro
|
|
376
|
+
*
|
|
377
|
+
* Set to 1 if SVE is available and bit width is pre-set at compile-time, to 0 otherwise.
|
|
378
|
+
*/
|
|
379
|
+
#if defined(__ARM_FEATURE_SVE) && defined(__ARM_FEATURE_SVE_BITS) && __ARM_FEATURE_SVE_BITS > 0
|
|
380
|
+
#define XSIMD_WITH_SVE 1
|
|
381
|
+
#define XSIMD_SVE_BITS __ARM_FEATURE_SVE_BITS
|
|
382
|
+
#else
|
|
383
|
+
#define XSIMD_WITH_SVE 0
|
|
384
|
+
#define XSIMD_SVE_BITS 0
|
|
385
|
+
#endif
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* @ingroup xsimd_config_macro
|
|
389
|
+
*
|
|
390
|
+
* Set to 1 if RVV is available and bit width is pre-set at compile-time, to 0 otherwise.
|
|
391
|
+
*/
|
|
392
|
+
#if defined(__riscv_vector) && defined(__riscv_v_fixed_vlen) && __riscv_v_fixed_vlen > 0
|
|
393
|
+
#define XSIMD_WITH_RVV 1
|
|
394
|
+
#define XSIMD_RVV_BITS __riscv_v_fixed_vlen
|
|
395
|
+
#else
|
|
396
|
+
#define XSIMD_WITH_RVV 0
|
|
397
|
+
#define XSIMD_RVV_BITS 0
|
|
398
|
+
#endif
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* @ingroup xsimd_config_macro
|
|
402
|
+
*
|
|
403
|
+
* Set to 1 if WebAssembly SIMD is available at compile-time, to 0 otherwise.
|
|
404
|
+
*/
|
|
405
|
+
#ifdef __EMSCRIPTEN__
|
|
406
|
+
#define XSIMD_WITH_WASM 1
|
|
407
|
+
#else
|
|
408
|
+
#define XSIMD_WITH_WASM 0
|
|
409
|
+
#endif
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* @ingroup xsimd_config_macro
|
|
413
|
+
*
|
|
414
|
+
* Set to 1 if VMX with VSX extension is available at compile-time, to 0 otherwise.
|
|
415
|
+
*/
|
|
416
|
+
#if defined(__VEC__) && defined(__VSX__)
|
|
417
|
+
#define XSIMD_WITH_VSX 1
|
|
418
|
+
#else
|
|
419
|
+
#define XSIMD_WITH_VSX 0
|
|
420
|
+
#endif
|
|
421
|
+
|
|
422
|
+
// Workaround for MSVC compiler
|
|
423
|
+
#ifdef _MSC_VER
|
|
424
|
+
|
|
425
|
+
#if XSIMD_WITH_AVX512
|
|
426
|
+
|
|
427
|
+
#undef XSIMD_WITH_AVX2
|
|
428
|
+
#define XSIMD_WITH_AVX2 1
|
|
429
|
+
|
|
430
|
+
#endif
|
|
431
|
+
|
|
432
|
+
#if XSIMD_WITH_AVX2
|
|
433
|
+
|
|
434
|
+
#undef XSIMD_WITH_AVX
|
|
435
|
+
#define XSIMD_WITH_AVX 1
|
|
436
|
+
|
|
437
|
+
#undef XSIMD_WITH_FMA3_AVX
|
|
438
|
+
#define XSIMD_WITH_FMA3_AVX 1
|
|
439
|
+
|
|
440
|
+
#undef XSIMD_WITH_FMA3_AVX2
|
|
441
|
+
#define XSIMD_WITH_FMA3_AVX2 1
|
|
442
|
+
|
|
443
|
+
#endif
|
|
444
|
+
|
|
445
|
+
#if XSIMD_WITH_AVX
|
|
446
|
+
|
|
447
|
+
#undef XSIMD_WITH_SSE4_2
|
|
448
|
+
#define XSIMD_WITH_SSE4_2 1
|
|
449
|
+
|
|
450
|
+
#endif
|
|
451
|
+
|
|
452
|
+
#if XSIMD_WITH_SSE4_2
|
|
453
|
+
|
|
454
|
+
#undef XSIMD_WITH_SSE4_1
|
|
455
|
+
#define XSIMD_WITH_SSE4_1 1
|
|
456
|
+
|
|
457
|
+
#endif
|
|
458
|
+
|
|
459
|
+
#if XSIMD_WITH_SSE4_1
|
|
460
|
+
|
|
461
|
+
#undef XSIMD_WITH_SSSE3
|
|
462
|
+
#define XSIMD_WITH_SSSE3 1
|
|
463
|
+
|
|
464
|
+
#endif
|
|
465
|
+
|
|
466
|
+
#if XSIMD_WITH_SSSE3
|
|
467
|
+
|
|
468
|
+
#undef XSIMD_WITH_SSE3
|
|
469
|
+
#define XSIMD_WITH_SSE3 1
|
|
470
|
+
|
|
471
|
+
#endif
|
|
472
|
+
|
|
473
|
+
#if XSIMD_WITH_SSE3 || ((defined(_M_AMD64) || defined(_M_X64)) && !defined(_M_ARM64EC)) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
|
474
|
+
#undef XSIMD_WITH_SSE2
|
|
475
|
+
#define XSIMD_WITH_SSE2 1
|
|
476
|
+
#endif
|
|
477
|
+
|
|
478
|
+
#endif
|
|
479
|
+
|
|
480
|
+
#if !XSIMD_WITH_SSE2 && !XSIMD_WITH_SSE3 && !XSIMD_WITH_SSSE3 && !XSIMD_WITH_SSE4_1 && !XSIMD_WITH_SSE4_2 && !XSIMD_WITH_AVX && !XSIMD_WITH_AVX2 && !XSIMD_WITH_AVXVNNI && !XSIMD_WITH_FMA3_SSE && !XSIMD_WITH_FMA4 && !XSIMD_WITH_FMA3_AVX && !XSIMD_WITH_FMA3_AVX2 && !XSIMD_WITH_AVX512F && !XSIMD_WITH_AVX512CD && !XSIMD_WITH_AVX512DQ && !XSIMD_WITH_AVX512BW && !XSIMD_WITH_AVX512ER && !XSIMD_WITH_AVX512PF && !XSIMD_WITH_AVX512IFMA && !XSIMD_WITH_AVX512VBMI && !XSIMD_WITH_AVX512VBMI2 && !XSIMD_WITH_NEON && !XSIMD_WITH_NEON64 && !XSIMD_WITH_SVE && !XSIMD_WITH_RVV && !XSIMD_WITH_WASM && !XSIMD_WITH_VSX && !XSIMD_WITH_EMULATED
|
|
481
|
+
#define XSIMD_NO_SUPPORTED_ARCHITECTURE
|
|
482
|
+
#endif
|
|
483
|
+
|
|
484
|
+
#endif
|