sequenzo 0.1.24__cp311-cp311-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.
Potentially problematic release.
This version of sequenzo might be problematic. Click here for more details.
- _sequenzo_fastcluster.cpython-311-darwin.so +0 -0
- 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 +474 -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-311-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-311-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 +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-311-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-311-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqconc.cpython-311-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqdss.cpython-311-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqdur.cpython-311-darwin.so +0 -0
- sequenzo/dissimilarity_measures/utils/seqlength.cpython-311-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 +951 -0
- sequenzo/visualization/plot_single_medoid.py +153 -0
- sequenzo/visualization/plot_state_distribution.py +627 -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.24.dist-info/METADATA +255 -0
- sequenzo-0.1.24.dist-info/RECORD +264 -0
- sequenzo-0.1.24.dist-info/WHEEL +5 -0
- sequenzo-0.1.24.dist-info/licenses/LICENSE +28 -0
- sequenzo-0.1.24.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,409 @@
|
|
|
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 "test_utils.hpp"
|
|
16
|
+
|
|
17
|
+
#if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
|
|
18
|
+
namespace detail
|
|
19
|
+
{
|
|
20
|
+
template <class T_out, class T_in>
|
|
21
|
+
inline typename std::enable_if<std::is_unsigned<T_in>::value && std::is_integral<T_out>::value, bool>::type
|
|
22
|
+
is_convertible(T_in value)
|
|
23
|
+
{
|
|
24
|
+
return static_cast<uint64_t>(value) <= static_cast<uint64_t>(std::numeric_limits<T_out>::max());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
template <class T_out, class T_in>
|
|
28
|
+
inline typename std::enable_if<std::is_integral<T_in>::value && std::is_signed<T_in>::value && std::is_integral<T_out>::value && std::is_signed<T_out>::value, bool>::type
|
|
29
|
+
is_convertible(T_in value)
|
|
30
|
+
{
|
|
31
|
+
int64_t signed_value = static_cast<int64_t>(value);
|
|
32
|
+
return signed_value < static_cast<int64_t>(std::numeric_limits<T_out>::max()) && signed_value >= static_cast<int64_t>(std::numeric_limits<T_out>::lowest());
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
template <class T_out, class T_in>
|
|
36
|
+
inline typename std::enable_if<std::is_integral<T_in>::value && std::is_signed<T_in>::value && std::is_unsigned<T_out>::value, bool>::type
|
|
37
|
+
is_convertible(T_in value)
|
|
38
|
+
{
|
|
39
|
+
return value >= 0 && is_convertible<T_out>(static_cast<uint64_t>(value));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
template <class T_out, class T_in>
|
|
43
|
+
inline typename std::enable_if<std::is_floating_point<T_in>::value && std::is_integral<T_out>::value, bool>::type
|
|
44
|
+
is_convertible(T_in value)
|
|
45
|
+
{
|
|
46
|
+
return value < static_cast<T_in>(std::numeric_limits<T_out>::max()) && value >= static_cast<T_in>(std::numeric_limits<T_out>::lowest());
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
template <class T_out, class T_in>
|
|
50
|
+
inline typename std::enable_if<std::is_floating_point<T_out>::value, bool>::type
|
|
51
|
+
is_convertible(T_in)
|
|
52
|
+
{
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <typename Arch, typename From, typename To>
|
|
57
|
+
using uses_fast_cast = std::is_same<xsimd::kernel::detail::conversion_type<Arch, From, To>,
|
|
58
|
+
xsimd::kernel::detail::with_fast_conversion>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
template <class CP>
|
|
62
|
+
struct batch_cast_test
|
|
63
|
+
{
|
|
64
|
+
static constexpr size_t N = CP::size;
|
|
65
|
+
static constexpr size_t A = CP::alignment;
|
|
66
|
+
|
|
67
|
+
using int8_batch = xsimd::batch<int8_t>;
|
|
68
|
+
using uint8_batch = xsimd::batch<uint8_t>;
|
|
69
|
+
using int16_batch = xsimd::batch<int16_t>;
|
|
70
|
+
using uint16_batch = xsimd::batch<uint16_t>;
|
|
71
|
+
using int32_batch = xsimd::batch<int32_t>;
|
|
72
|
+
using uint32_batch = xsimd::batch<uint32_t>;
|
|
73
|
+
using int64_batch = xsimd::batch<int64_t>;
|
|
74
|
+
using uint64_batch = xsimd::batch<uint64_t>;
|
|
75
|
+
using float_batch = xsimd::batch<float>;
|
|
76
|
+
using double_batch = xsimd::batch<double>;
|
|
77
|
+
|
|
78
|
+
std::vector<uint64_t> int_test_values;
|
|
79
|
+
std::vector<float> float_test_values;
|
|
80
|
+
std::vector<double> double_test_values;
|
|
81
|
+
|
|
82
|
+
batch_cast_test()
|
|
83
|
+
{
|
|
84
|
+
int_test_values = {
|
|
85
|
+
0,
|
|
86
|
+
0x01,
|
|
87
|
+
0x7f,
|
|
88
|
+
0x80,
|
|
89
|
+
0xff,
|
|
90
|
+
0x0100,
|
|
91
|
+
0x7fff,
|
|
92
|
+
0x8000,
|
|
93
|
+
0xffff,
|
|
94
|
+
0x00010000,
|
|
95
|
+
0x7fffffff,
|
|
96
|
+
0x80000000,
|
|
97
|
+
0xffffffff,
|
|
98
|
+
0x0000000100000000,
|
|
99
|
+
0x7fffffffffffffff,
|
|
100
|
+
0x8000000000000000,
|
|
101
|
+
0xffffffffffffffff
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
float_test_values = {
|
|
105
|
+
0.0f,
|
|
106
|
+
1.0f,
|
|
107
|
+
-1.0f,
|
|
108
|
+
127.0f,
|
|
109
|
+
128.0f,
|
|
110
|
+
-128.0f,
|
|
111
|
+
255.0f,
|
|
112
|
+
256.0f,
|
|
113
|
+
-256.0f,
|
|
114
|
+
32767.0f,
|
|
115
|
+
32768.0f,
|
|
116
|
+
-32768.0f,
|
|
117
|
+
65535.0f,
|
|
118
|
+
65536.0f,
|
|
119
|
+
-65536.0f,
|
|
120
|
+
2147483647.0f,
|
|
121
|
+
2147483648.0f,
|
|
122
|
+
-2147483648.0f,
|
|
123
|
+
4294967167.0f
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
double_test_values = {
|
|
127
|
+
0.0,
|
|
128
|
+
1.0,
|
|
129
|
+
-1.0,
|
|
130
|
+
127.0,
|
|
131
|
+
128.0,
|
|
132
|
+
-128.0,
|
|
133
|
+
255.0,
|
|
134
|
+
256.0,
|
|
135
|
+
-256.0,
|
|
136
|
+
32767.0,
|
|
137
|
+
32768.0,
|
|
138
|
+
-32768.0,
|
|
139
|
+
65535.0,
|
|
140
|
+
65536.0,
|
|
141
|
+
-65536.0,
|
|
142
|
+
2147483647.0,
|
|
143
|
+
2147483648.0,
|
|
144
|
+
-2147483648.0,
|
|
145
|
+
4294967295.0,
|
|
146
|
+
4294967296.0,
|
|
147
|
+
-4294967296.0,
|
|
148
|
+
9223372036854775807.0,
|
|
149
|
+
9223372036854775808.0,
|
|
150
|
+
-9223372036854775808.0,
|
|
151
|
+
18446744073709550591.0
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
void test_bool_cast() const
|
|
156
|
+
{
|
|
157
|
+
test_bool_cast_impl<float_batch, int32_batch>("batch bool cast float -> int32");
|
|
158
|
+
test_bool_cast_impl<float_batch, uint32_batch>("batch bool cast float -> uint32");
|
|
159
|
+
test_bool_cast_impl<int32_batch, float_batch>("batch bool cast int32 -> float");
|
|
160
|
+
test_bool_cast_impl<uint32_batch, float_batch>("batch bool cast uint32 -> float");
|
|
161
|
+
test_bool_cast_impl<float_batch, float_batch>("batch bool cast float -> float");
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
void test_cast() const
|
|
165
|
+
{
|
|
166
|
+
for (const auto& test_value : int_test_values)
|
|
167
|
+
{
|
|
168
|
+
test_cast_impl<int8_batch, int8_batch>(test_value, "batch cast int8 -> int8");
|
|
169
|
+
test_cast_impl<int8_batch, uint8_batch>(test_value, "batch cast int8 -> uint8");
|
|
170
|
+
test_cast_impl<uint8_batch, int8_batch>(test_value, "batch cast uint8 -> int8");
|
|
171
|
+
test_cast_impl<uint8_batch, uint8_batch>(test_value, "batch cast uint8 -> uint8");
|
|
172
|
+
|
|
173
|
+
test_cast_impl<int16_batch, int16_batch>(test_value, "batch cast int16 -> int16");
|
|
174
|
+
test_cast_impl<int16_batch, uint16_batch>(test_value, "batch cast int16 -> uint16");
|
|
175
|
+
test_cast_impl<uint16_batch, int16_batch>(test_value, "batch cast uint16 -> int16");
|
|
176
|
+
test_cast_impl<uint16_batch, uint16_batch>(test_value, "batch cast uint16 -> uint16");
|
|
177
|
+
|
|
178
|
+
test_cast_impl<int32_batch, int32_batch>(test_value, "batch cast int32 -> int32");
|
|
179
|
+
test_cast_impl<int32_batch, uint32_batch>(test_value, "batch cast int32 -> uint32");
|
|
180
|
+
test_cast_impl<int32_batch, float_batch>(test_value, "batch cast int32 -> float");
|
|
181
|
+
test_cast_impl<uint32_batch, int32_batch>(test_value, "batch cast uint32 -> int32");
|
|
182
|
+
test_cast_impl<uint32_batch, uint32_batch>(test_value, "batch cast uint32 -> uint32");
|
|
183
|
+
test_cast_impl<uint32_batch, float_batch>(test_value, "batch cast uint32 -> float");
|
|
184
|
+
|
|
185
|
+
test_cast_impl<int64_batch, int64_batch>(test_value, "batch cast int64 -> int64");
|
|
186
|
+
test_cast_impl<int64_batch, uint64_batch>(test_value, "batch cast int64 -> uint64");
|
|
187
|
+
test_cast_impl<int64_batch, double_batch>(test_value, "batch cast int64 -> double");
|
|
188
|
+
test_cast_impl<uint64_batch, int64_batch>(test_value, "batch cast uint64 -> int64");
|
|
189
|
+
test_cast_impl<uint64_batch, uint64_batch>(test_value, "batch cast uint64 -> uint64");
|
|
190
|
+
test_cast_impl<uint64_batch, double_batch>(test_value, "batch cast uint64 -> double");
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
for (const auto& test_value : float_test_values)
|
|
194
|
+
{
|
|
195
|
+
test_cast_impl<float_batch, int32_batch>(test_value, "batch cast float -> int32");
|
|
196
|
+
test_cast_impl<float_batch, uint32_batch>(test_value, "batch cast float -> uint32");
|
|
197
|
+
test_cast_impl<float_batch, float_batch>(test_value, "batch cast float -> float");
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
for (const auto& test_value : double_test_values)
|
|
201
|
+
{
|
|
202
|
+
test_cast_impl<double_batch, int64_batch>(test_value, "batch cast double -> int64");
|
|
203
|
+
test_cast_impl<double_batch, uint64_batch>(test_value, "batch cast double -> uint64");
|
|
204
|
+
test_cast_impl<double_batch, double_batch>(test_value, "batch cast double -> double");
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
#if 0 && XSIMD_X86_INSTR_SET >= XSIMD_X86_AVX_VERSION
|
|
209
|
+
template <size_t Align = A>
|
|
210
|
+
typename std::enable_if<Align >= 32, void>::type test_cast_sizeshift1() const
|
|
211
|
+
{
|
|
212
|
+
for (const auto& test_value : int_test_values)
|
|
213
|
+
{
|
|
214
|
+
test_cast_impl<int8_batch, int16_batch>(test_value, "batch cast int8 -> int16");
|
|
215
|
+
test_cast_impl<int8_batch, uint16_batch>(test_value, "batch cast int8 -> uint16");
|
|
216
|
+
test_cast_impl<uint8_batch, int16_batch>(test_value, "batch cast uint8 -> int16");
|
|
217
|
+
test_cast_impl<uint8_batch, uint16_batch>(test_value, "batch cast uint8 -> uint16");
|
|
218
|
+
|
|
219
|
+
test_cast_impl<int16_batch, int8_batch>(test_value, "batch cast int16 -> int8");
|
|
220
|
+
test_cast_impl<int16_batch, uint8_batch>(test_value, "batch cast int16 -> uint8");
|
|
221
|
+
test_cast_impl<int16_batch, int32_batch>(test_value, "batch cast int16 -> int32");
|
|
222
|
+
test_cast_impl<int16_batch, uint32_batch>(test_value, "batch cast int16 -> uint32");
|
|
223
|
+
test_cast_impl<int16_batch, float_batch>(test_value, "batch cast int16 -> float");
|
|
224
|
+
test_cast_impl<uint16_batch, int8_batch>(test_value, "batch cast uint16 -> int8");
|
|
225
|
+
test_cast_impl<uint16_batch, uint8_batch>(test_value, "batch cast uint16 -> uint8");
|
|
226
|
+
test_cast_impl<uint16_batch, int32_batch>(test_value, "batch cast uint16 -> int32");
|
|
227
|
+
test_cast_impl<uint16_batch, uint32_batch>(test_value, "batch cast uint16 -> uint32");
|
|
228
|
+
test_cast_impl<uint16_batch, float_batch>(test_value, "batch cast uint16 -> float");
|
|
229
|
+
|
|
230
|
+
test_cast_impl<int32_batch, int16_batch>(test_value, "batch cast int32 -> int16");
|
|
231
|
+
test_cast_impl<int32_batch, uint16_batch>(test_value, "batch cast int32 -> uint16");
|
|
232
|
+
test_cast_impl<int32_batch, int64_batch>(test_value, "batch cast int32 -> int64");
|
|
233
|
+
test_cast_impl<int32_batch, uint64_batch>(test_value, "batch cast int32 -> uint64");
|
|
234
|
+
test_cast_impl<int32_batch, double_batch>(test_value, "batch cast int32 -> double");
|
|
235
|
+
test_cast_impl<uint32_batch, int16_batch>(test_value, "batch cast uint32 -> int16");
|
|
236
|
+
test_cast_impl<uint32_batch, uint16_batch>(test_value, "batch cast uint32 -> uint16");
|
|
237
|
+
test_cast_impl<uint32_batch, int64_batch>(test_value, "batch cast uint32 -> int64");
|
|
238
|
+
test_cast_impl<uint32_batch, uint64_batch>(test_value, "batch cast uint32 -> uint64");
|
|
239
|
+
test_cast_impl<uint32_batch, double_batch>(test_value, "batch cast uint32 -> double");
|
|
240
|
+
|
|
241
|
+
test_cast_impl<int64_batch, int32_batch>(test_value, "batch cast int64 -> int32");
|
|
242
|
+
test_cast_impl<int64_batch, uint32_batch>(test_value, "batch cast int64 -> uint32");
|
|
243
|
+
test_cast_impl<int64_batch, float_batch>(test_value, "batch cast int64 -> float");
|
|
244
|
+
test_cast_impl<uint64_batch, int32_batch>(test_value, "batch cast uint64 -> int32");
|
|
245
|
+
test_cast_impl<uint64_batch, uint32_batch>(test_value, "batch cast uint64 -> uint32");
|
|
246
|
+
test_cast_impl<uint64_batch, float_batch>(test_value, "batch cast uint64 -> float");
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
for (const auto& test_value : float_test_values)
|
|
250
|
+
{
|
|
251
|
+
test_cast_impl<float_batch, int16_batch>(test_value, "batch cast float -> int16");
|
|
252
|
+
test_cast_impl<float_batch, uint16_batch>(test_value, "batch cast float -> uint16");
|
|
253
|
+
test_cast_impl<float_batch, int64_batch>(test_value, "batch cast float -> int64");
|
|
254
|
+
test_cast_impl<float_batch, uint64_batch>(test_value, "batch cast float -> uint64");
|
|
255
|
+
test_cast_impl<float_batch, double_batch>(test_value, "batch cast float -> double");
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
for (const auto& test_value : double_test_values)
|
|
259
|
+
{
|
|
260
|
+
test_cast_impl<double_batch, int32_batch>(test_value, "batch cast double -> int32");
|
|
261
|
+
test_cast_impl<double_batch, uint32_batch>(test_value, "batch cast double -> uint32");
|
|
262
|
+
test_cast_impl<double_batch, float_batch>(test_value, "batch cast double -> float");
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
template <size_t Align = A>
|
|
267
|
+
typename std::enable_if<Align < 32, void>::type test_cast_sizeshift1() const
|
|
268
|
+
{
|
|
269
|
+
}
|
|
270
|
+
#endif
|
|
271
|
+
|
|
272
|
+
#if 0 && XSIMD_X86_INSTR_SET >= XSIMD_X86_AVX512_VERSION
|
|
273
|
+
template <size_t Align = A>
|
|
274
|
+
typename std::enable_if<Align >= 64, void>::type test_cast_sizeshift2() const
|
|
275
|
+
{
|
|
276
|
+
for (const auto& test_value : int_test_values)
|
|
277
|
+
{
|
|
278
|
+
test_cast_impl<int8_batch, int32_batch>(test_value, "batch cast int8 -> int32");
|
|
279
|
+
test_cast_impl<int8_batch, uint32_batch>(test_value, "batch cast int8 -> uint32");
|
|
280
|
+
test_cast_impl<int8_batch, float_batch>(test_value, "batch cast int8 -> float");
|
|
281
|
+
test_cast_impl<uint8_batch, int32_batch>(test_value, "batch cast uint8 -> int32");
|
|
282
|
+
test_cast_impl<uint8_batch, uint32_batch>(test_value, "batch cast uint8 -> uint32");
|
|
283
|
+
test_cast_impl<uint8_batch, float_batch>(test_value, "batch cast uint8 -> float");
|
|
284
|
+
|
|
285
|
+
test_cast_impl<int16_batch, int64_batch>(test_value, "batch cast int16 -> int64");
|
|
286
|
+
test_cast_impl<int16_batch, uint64_batch>(test_value, "batch cast int16 -> uint64");
|
|
287
|
+
test_cast_impl<int16_batch, double_batch>(test_value, "batch cast int16 -> double");
|
|
288
|
+
test_cast_impl<uint16_batch, int64_batch>(test_value, "batch cast uint16 -> int64");
|
|
289
|
+
test_cast_impl<uint16_batch, uint64_batch>(test_value, "batch cast uint16 -> uint64");
|
|
290
|
+
test_cast_impl<uint16_batch, double_batch>(test_value, "batch cast uint16 -> double");
|
|
291
|
+
|
|
292
|
+
test_cast_impl<int32_batch, int8_batch>(test_value, "batch cast int32 -> int8");
|
|
293
|
+
test_cast_impl<int32_batch, uint8_batch>(test_value, "batch cast int32 -> uint8");
|
|
294
|
+
test_cast_impl<uint32_batch, int8_batch>(test_value, "batch cast uint32 -> int8");
|
|
295
|
+
test_cast_impl<uint32_batch, uint8_batch>(test_value, "batch cast uint32 -> uint8");
|
|
296
|
+
|
|
297
|
+
test_cast_impl<int64_batch, int16_batch>(test_value, "batch cast int64 -> int16");
|
|
298
|
+
test_cast_impl<int64_batch, uint16_batch>(test_value, "batch cast int64 -> uint16");
|
|
299
|
+
test_cast_impl<uint64_batch, int16_batch>(test_value, "batch cast uint64 -> int16");
|
|
300
|
+
test_cast_impl<uint64_batch, uint16_batch>(test_value, "batch cast uint64 -> uint16");
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
for (const auto& test_value : float_test_values)
|
|
304
|
+
{
|
|
305
|
+
test_cast_impl<float_batch, int8_batch>(test_value, "batch cast float -> int8");
|
|
306
|
+
test_cast_impl<float_batch, uint8_batch>(test_value, "batch cast float -> uint8");
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
for (const auto& test_value : double_test_values)
|
|
310
|
+
{
|
|
311
|
+
test_cast_impl<double_batch, int16_batch>(test_value, "batch cast double -> int16");
|
|
312
|
+
test_cast_impl<double_batch, uint16_batch>(test_value, "batch cast double -> uint16");
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
template <size_t Align = A>
|
|
317
|
+
typename std::enable_if<Align < 64, void>::type test_cast_sizeshift2() const
|
|
318
|
+
{
|
|
319
|
+
}
|
|
320
|
+
#endif
|
|
321
|
+
|
|
322
|
+
private:
|
|
323
|
+
template <class B_in, class B_out, class T>
|
|
324
|
+
void test_cast_impl(T test_value, const std::string& name) const
|
|
325
|
+
{
|
|
326
|
+
using T_in = typename B_in::value_type;
|
|
327
|
+
using T_out = typename B_out::value_type;
|
|
328
|
+
using B_common_in = xsimd::batch<T_in>;
|
|
329
|
+
using B_common_out = xsimd::batch<T_out>;
|
|
330
|
+
|
|
331
|
+
auto clamp = [](T v)
|
|
332
|
+
{
|
|
333
|
+
return static_cast<T_in>(xsimd::min(v, static_cast<T>(std::numeric_limits<T_in>::max() - 1)));
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
T_in in_test_value = clamp(test_value);
|
|
337
|
+
if (detail::is_convertible<T_out>(in_test_value))
|
|
338
|
+
{
|
|
339
|
+
B_common_out res = xsimd::batch_cast<T_out>(B_common_in(in_test_value));
|
|
340
|
+
INFO(name);
|
|
341
|
+
T_out scalar_ref = static_cast<T_out>(in_test_value);
|
|
342
|
+
T_out scalar_res = res.get(0);
|
|
343
|
+
CHECK_SCALAR_EQ(scalar_ref, scalar_res);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
template <class B_in, class B_out>
|
|
348
|
+
void test_bool_cast_impl(const std::string& name) const
|
|
349
|
+
{
|
|
350
|
+
using T_in = typename B_in::value_type;
|
|
351
|
+
using T_out = typename B_out::value_type;
|
|
352
|
+
using B_common_in = xsimd::batch_bool<T_in>;
|
|
353
|
+
using B_common_out = xsimd::batch_bool<T_out>;
|
|
354
|
+
|
|
355
|
+
B_common_in all_true_in(true);
|
|
356
|
+
B_common_out all_true_res = xsimd::batch_bool_cast<T_out>(all_true_in);
|
|
357
|
+
INFO(name);
|
|
358
|
+
CHECK_SCALAR_EQ(all_true_res.get(0), true);
|
|
359
|
+
|
|
360
|
+
B_common_in all_false_in(false);
|
|
361
|
+
B_common_out all_false_res = xsimd::batch_bool_cast<T_out>(all_false_in);
|
|
362
|
+
INFO(name);
|
|
363
|
+
CHECK_SCALAR_EQ(all_false_res.get(0), false);
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
TEST_CASE_TEMPLATE("[xsimd cast tests]", B, CONVERSION_TYPES)
|
|
368
|
+
{
|
|
369
|
+
batch_cast_test<B> Test;
|
|
370
|
+
|
|
371
|
+
SUBCASE("bool cast")
|
|
372
|
+
{
|
|
373
|
+
Test.test_bool_cast();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
SUBCASE("cast")
|
|
377
|
+
{
|
|
378
|
+
Test.test_cast();
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
#endif
|
|
382
|
+
#if 0 && XSIMD_X86_INSTR_SET >= XSIMD_X86_AVX_VERSION
|
|
383
|
+
TYPED_TEST(batch_cast_test, cast_sizeshift1)
|
|
384
|
+
{
|
|
385
|
+
this->test_cast_sizeshift1();
|
|
386
|
+
}
|
|
387
|
+
#endif
|
|
388
|
+
|
|
389
|
+
#if 0 && XSIMD_X86_INSTR_SET >= XSIMD_X86_AVX512_VERSION
|
|
390
|
+
TYPED_TEST(batch_cast_test, cast_sizeshift2)
|
|
391
|
+
{
|
|
392
|
+
this->test_cast_sizeshift2();
|
|
393
|
+
}
|
|
394
|
+
#endif
|
|
395
|
+
|
|
396
|
+
#if XSIMD_WITH_SSE2
|
|
397
|
+
TEST_CASE_TEMPLATE("[xsimd cast tests]", B, CONVERSION_TYPES)
|
|
398
|
+
{
|
|
399
|
+
SUBCASE("use fastcast")
|
|
400
|
+
{
|
|
401
|
+
using A = xsimd::default_arch;
|
|
402
|
+
static_assert(detail::uses_fast_cast<A, int32_t, float>::value,
|
|
403
|
+
"expected int32 to float conversion to use fast_cast");
|
|
404
|
+
static_assert(detail::uses_fast_cast<A, float, int32_t>::value,
|
|
405
|
+
"expected float to int32 conversion to use fast_cast");
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
#endif
|
|
409
|
+
#endif
|