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,536 @@
|
|
|
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_UTILS_HPP
|
|
13
|
+
#define XSIMD_UTILS_HPP
|
|
14
|
+
|
|
15
|
+
#include <complex>
|
|
16
|
+
#include <cstdint>
|
|
17
|
+
#include <cstring>
|
|
18
|
+
#include <tuple>
|
|
19
|
+
#include <type_traits>
|
|
20
|
+
|
|
21
|
+
#ifdef XSIMD_ENABLE_XTL_COMPLEX
|
|
22
|
+
#include "xtl/xcomplex.hpp"
|
|
23
|
+
#endif
|
|
24
|
+
|
|
25
|
+
namespace xsimd
|
|
26
|
+
{
|
|
27
|
+
|
|
28
|
+
template <class T, class A>
|
|
29
|
+
class batch;
|
|
30
|
+
|
|
31
|
+
template <class T, class A>
|
|
32
|
+
class batch_bool;
|
|
33
|
+
|
|
34
|
+
/**************
|
|
35
|
+
* index *
|
|
36
|
+
**************/
|
|
37
|
+
|
|
38
|
+
template <size_t I>
|
|
39
|
+
using index = std::integral_constant<size_t, I>;
|
|
40
|
+
|
|
41
|
+
/**************
|
|
42
|
+
* as_integer *
|
|
43
|
+
**************/
|
|
44
|
+
|
|
45
|
+
template <class T>
|
|
46
|
+
struct as_integer : std::make_signed<T>
|
|
47
|
+
{
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
template <>
|
|
51
|
+
struct as_integer<float>
|
|
52
|
+
{
|
|
53
|
+
using type = int32_t;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
template <>
|
|
57
|
+
struct as_integer<double>
|
|
58
|
+
{
|
|
59
|
+
using type = int64_t;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
template <class T, class A>
|
|
63
|
+
struct as_integer<batch<T, A>>
|
|
64
|
+
{
|
|
65
|
+
using type = batch<typename as_integer<T>::type, A>;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
template <class B>
|
|
69
|
+
using as_integer_t = typename as_integer<B>::type;
|
|
70
|
+
|
|
71
|
+
/***********************
|
|
72
|
+
* as_unsigned_integer *
|
|
73
|
+
***********************/
|
|
74
|
+
|
|
75
|
+
template <class T>
|
|
76
|
+
struct as_unsigned_integer : std::make_unsigned<T>
|
|
77
|
+
{
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
template <>
|
|
81
|
+
struct as_unsigned_integer<bool>
|
|
82
|
+
{
|
|
83
|
+
using type = uint8_t;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
template <>
|
|
87
|
+
struct as_unsigned_integer<float>
|
|
88
|
+
{
|
|
89
|
+
using type = uint32_t;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
template <>
|
|
93
|
+
struct as_unsigned_integer<double>
|
|
94
|
+
{
|
|
95
|
+
using type = uint64_t;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
template <class T, class A>
|
|
99
|
+
struct as_unsigned_integer<batch<T, A>>
|
|
100
|
+
{
|
|
101
|
+
using type = batch<typename as_unsigned_integer<T>::type, A>;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
template <class T>
|
|
105
|
+
using as_unsigned_integer_t = typename as_unsigned_integer<T>::type;
|
|
106
|
+
|
|
107
|
+
/*********************
|
|
108
|
+
* as_signed_integer *
|
|
109
|
+
*********************/
|
|
110
|
+
|
|
111
|
+
template <class T>
|
|
112
|
+
struct as_signed_integer : std::make_signed<T>
|
|
113
|
+
{
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
template <class T>
|
|
117
|
+
using as_signed_integer_t = typename as_signed_integer<T>::type;
|
|
118
|
+
|
|
119
|
+
/******************
|
|
120
|
+
* flip_sign_type *
|
|
121
|
+
******************/
|
|
122
|
+
|
|
123
|
+
namespace detail
|
|
124
|
+
{
|
|
125
|
+
template <class T, bool is_signed>
|
|
126
|
+
struct flipped_sign_type_impl : std::make_signed<T>
|
|
127
|
+
{
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
template <class T>
|
|
131
|
+
struct flipped_sign_type_impl<T, true> : std::make_unsigned<T>
|
|
132
|
+
{
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
template <class T>
|
|
137
|
+
struct flipped_sign_type
|
|
138
|
+
: detail::flipped_sign_type_impl<T, std::is_signed<T>::value>
|
|
139
|
+
{
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
template <class T>
|
|
143
|
+
using flipped_sign_type_t = typename flipped_sign_type<T>::type;
|
|
144
|
+
|
|
145
|
+
/***********
|
|
146
|
+
* as_float *
|
|
147
|
+
************/
|
|
148
|
+
|
|
149
|
+
template <class T>
|
|
150
|
+
struct as_float;
|
|
151
|
+
|
|
152
|
+
template <>
|
|
153
|
+
struct as_float<int32_t>
|
|
154
|
+
{
|
|
155
|
+
using type = float;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
template <>
|
|
159
|
+
struct as_float<int64_t>
|
|
160
|
+
{
|
|
161
|
+
using type = double;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
template <class T, class A>
|
|
165
|
+
struct as_float<batch<T, A>>
|
|
166
|
+
{
|
|
167
|
+
using type = batch<typename as_float<T>::type, A>;
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
template <class T>
|
|
171
|
+
using as_float_t = typename as_float<T>::type;
|
|
172
|
+
|
|
173
|
+
/**************
|
|
174
|
+
* as_logical *
|
|
175
|
+
**************/
|
|
176
|
+
|
|
177
|
+
template <class T>
|
|
178
|
+
struct as_logical;
|
|
179
|
+
|
|
180
|
+
template <class T, class A>
|
|
181
|
+
struct as_logical<batch<T, A>>
|
|
182
|
+
{
|
|
183
|
+
using type = batch_bool<T, A>;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
template <class T>
|
|
187
|
+
using as_logical_t = typename as_logical<T>::type;
|
|
188
|
+
|
|
189
|
+
/********************
|
|
190
|
+
* bit_cast *
|
|
191
|
+
********************/
|
|
192
|
+
|
|
193
|
+
template <class To, class From>
|
|
194
|
+
inline To bit_cast(From val) noexcept
|
|
195
|
+
{
|
|
196
|
+
static_assert(sizeof(From) == sizeof(To), "casting between compatible layout");
|
|
197
|
+
// FIXME: Some old version of GCC don't support that trait
|
|
198
|
+
// static_assert(std::is_trivially_copyable<From>::value, "input type is trivially copyable");
|
|
199
|
+
// static_assert(std::is_trivially_copyable<To>::value, "output type is trivially copyable");
|
|
200
|
+
To res;
|
|
201
|
+
std::memcpy(&res, &val, sizeof(val));
|
|
202
|
+
return res;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
namespace kernel
|
|
206
|
+
{
|
|
207
|
+
namespace detail
|
|
208
|
+
{
|
|
209
|
+
/**************************************
|
|
210
|
+
* enabling / disabling metafunctions *
|
|
211
|
+
**************************************/
|
|
212
|
+
|
|
213
|
+
template <class T>
|
|
214
|
+
using enable_integral_t = typename std::enable_if<std::is_integral<T>::value, int>::type;
|
|
215
|
+
|
|
216
|
+
template <class T, size_t S>
|
|
217
|
+
using enable_sized_signed_t = typename std::enable_if<std::is_integral<T>::value && std::is_signed<T>::value && sizeof(T) == S, int>::type;
|
|
218
|
+
|
|
219
|
+
template <class T, size_t S>
|
|
220
|
+
using enable_sized_unsigned_t = typename std::enable_if<std::is_integral<T>::value && !std::is_signed<T>::value && sizeof(T) == S, int>::type;
|
|
221
|
+
|
|
222
|
+
template <class T, size_t S>
|
|
223
|
+
using enable_sized_integral_t = typename std::enable_if<std::is_integral<T>::value && sizeof(T) == S, int>::type;
|
|
224
|
+
|
|
225
|
+
template <class T, size_t S>
|
|
226
|
+
using enable_sized_t = typename std::enable_if<sizeof(T) == S, int>::type;
|
|
227
|
+
|
|
228
|
+
template <class T, size_t S>
|
|
229
|
+
using enable_max_sized_integral_t = typename std::enable_if<std::is_integral<T>::value && sizeof(T) <= S, int>::type;
|
|
230
|
+
|
|
231
|
+
/********************************
|
|
232
|
+
* Matching & mismatching sizes *
|
|
233
|
+
********************************/
|
|
234
|
+
|
|
235
|
+
template <class T, class U, class B = int>
|
|
236
|
+
using sizes_match_t = typename std::enable_if<sizeof(T) == sizeof(U), B>::type;
|
|
237
|
+
|
|
238
|
+
template <class T, class U, class B = int>
|
|
239
|
+
using sizes_mismatch_t = typename std::enable_if<sizeof(T) != sizeof(U), B>::type;
|
|
240
|
+
|
|
241
|
+
template <class T, class U, class B = int>
|
|
242
|
+
using stride_match_t = typename std::enable_if<!std::is_same<T, U>::value && sizeof(T) == sizeof(U), B>::type;
|
|
243
|
+
} // namespace detail
|
|
244
|
+
} // namespace kernel
|
|
245
|
+
|
|
246
|
+
/*****************************************
|
|
247
|
+
* Backport of index_sequence from c++14 *
|
|
248
|
+
*****************************************/
|
|
249
|
+
|
|
250
|
+
// TODO: Remove this once we drop C++11 support
|
|
251
|
+
namespace detail
|
|
252
|
+
{
|
|
253
|
+
template <typename T>
|
|
254
|
+
struct identity
|
|
255
|
+
{
|
|
256
|
+
using type = T;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
#ifdef __cpp_lib_integer_sequence
|
|
260
|
+
using std::index_sequence;
|
|
261
|
+
using std::integer_sequence;
|
|
262
|
+
using std::make_index_sequence;
|
|
263
|
+
using std::make_integer_sequence;
|
|
264
|
+
|
|
265
|
+
using std::index_sequence_for;
|
|
266
|
+
#else
|
|
267
|
+
template <typename T, T... Is>
|
|
268
|
+
struct integer_sequence
|
|
269
|
+
{
|
|
270
|
+
using value_type = T;
|
|
271
|
+
static constexpr std::size_t size() noexcept { return sizeof...(Is); }
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
template <typename Lhs, typename Rhs>
|
|
275
|
+
struct make_integer_sequence_concat;
|
|
276
|
+
|
|
277
|
+
template <typename T, T... Lhs, T... Rhs>
|
|
278
|
+
struct make_integer_sequence_concat<integer_sequence<T, Lhs...>,
|
|
279
|
+
integer_sequence<T, Rhs...>>
|
|
280
|
+
: identity<integer_sequence<T, Lhs..., (sizeof...(Lhs) + Rhs)...>>
|
|
281
|
+
{
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
template <typename T>
|
|
285
|
+
struct make_integer_sequence_impl;
|
|
286
|
+
|
|
287
|
+
template <typename T>
|
|
288
|
+
struct make_integer_sequence_impl<std::integral_constant<T, (T)0>> : identity<integer_sequence<T>>
|
|
289
|
+
{
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
template <typename T>
|
|
293
|
+
struct make_integer_sequence_impl<std::integral_constant<T, (T)1>> : identity<integer_sequence<T, 0>>
|
|
294
|
+
{
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
template <typename T, T N>
|
|
298
|
+
struct make_integer_sequence_impl<std::integral_constant<T, N>>
|
|
299
|
+
: make_integer_sequence_concat<typename make_integer_sequence_impl<std::integral_constant<T, N / 2>>::type,
|
|
300
|
+
typename make_integer_sequence_impl<std::integral_constant<T, N - (N / 2)>>::type>
|
|
301
|
+
{
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
template <typename T, T N>
|
|
305
|
+
using make_integer_sequence = typename make_integer_sequence_impl<std::integral_constant<T, N>>::type;
|
|
306
|
+
|
|
307
|
+
template <std::size_t... Is>
|
|
308
|
+
using index_sequence = integer_sequence<std::size_t, Is...>;
|
|
309
|
+
|
|
310
|
+
template <std::size_t N>
|
|
311
|
+
using make_index_sequence = make_integer_sequence<std::size_t, N>;
|
|
312
|
+
|
|
313
|
+
template <typename... Ts>
|
|
314
|
+
using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
|
|
315
|
+
|
|
316
|
+
#endif
|
|
317
|
+
|
|
318
|
+
template <int... Is>
|
|
319
|
+
using int_sequence = integer_sequence<int, Is...>;
|
|
320
|
+
|
|
321
|
+
template <int N>
|
|
322
|
+
using make_int_sequence = make_integer_sequence<int, N>;
|
|
323
|
+
|
|
324
|
+
template <typename... Ts>
|
|
325
|
+
using int_sequence_for = make_int_sequence<(int)sizeof...(Ts)>;
|
|
326
|
+
|
|
327
|
+
// Type-casted index sequence.
|
|
328
|
+
template <class P, size_t... Is>
|
|
329
|
+
inline P indexes_from(index_sequence<Is...>) noexcept
|
|
330
|
+
{
|
|
331
|
+
return { static_cast<typename P::value_type>(Is)... };
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
template <class P>
|
|
335
|
+
inline P make_sequence_as_batch() noexcept
|
|
336
|
+
{
|
|
337
|
+
return indexes_from<P>(make_index_sequence<P::size>());
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/***********************************
|
|
342
|
+
* Backport of std::get from C++14 *
|
|
343
|
+
***********************************/
|
|
344
|
+
|
|
345
|
+
namespace detail
|
|
346
|
+
{
|
|
347
|
+
template <class T, class... Types, size_t I, size_t... Is>
|
|
348
|
+
inline const T& get_impl(const std::tuple<Types...>& t, std::is_same<T, T>, index_sequence<I, Is...>) noexcept
|
|
349
|
+
{
|
|
350
|
+
return std::get<I>(t);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
template <class T, class U, class... Types, size_t I, size_t... Is>
|
|
354
|
+
inline const T& get_impl(const std::tuple<Types...>& t, std::is_same<T, U>, index_sequence<I, Is...>) noexcept
|
|
355
|
+
{
|
|
356
|
+
using tuple_elem = typename std::tuple_element<I + 1, std::tuple<Types...>>::type;
|
|
357
|
+
return get_impl<T>(t, std::is_same<T, tuple_elem>(), index_sequence<Is...>());
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
template <class T, class... Types>
|
|
361
|
+
inline const T& get(const std::tuple<Types...>& t) noexcept
|
|
362
|
+
{
|
|
363
|
+
using tuple_elem = typename std::tuple_element<0, std::tuple<Types...>>::type;
|
|
364
|
+
return get_impl<T>(t, std::is_same<T, tuple_elem>(), make_index_sequence<sizeof...(Types)>());
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/*********************************
|
|
369
|
+
* Backport of void_t from C++17 *
|
|
370
|
+
*********************************/
|
|
371
|
+
|
|
372
|
+
namespace detail
|
|
373
|
+
{
|
|
374
|
+
template <class... T>
|
|
375
|
+
struct make_void
|
|
376
|
+
{
|
|
377
|
+
using type = void;
|
|
378
|
+
};
|
|
379
|
+
|
|
380
|
+
template <class... T>
|
|
381
|
+
using void_t = typename make_void<T...>::type;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**************************************************
|
|
385
|
+
* Equivalent of void_t but with size_t parameter *
|
|
386
|
+
**************************************************/
|
|
387
|
+
|
|
388
|
+
namespace detail
|
|
389
|
+
{
|
|
390
|
+
template <std::size_t>
|
|
391
|
+
struct check_size
|
|
392
|
+
{
|
|
393
|
+
using type = void;
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
template <std::size_t S>
|
|
397
|
+
using check_size_t = typename check_size<S>::type;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/*****************************************
|
|
401
|
+
* Supplementary std::array constructors *
|
|
402
|
+
*****************************************/
|
|
403
|
+
|
|
404
|
+
namespace detail
|
|
405
|
+
{
|
|
406
|
+
// std::array constructor from scalar value ("broadcast")
|
|
407
|
+
template <typename T, std::size_t... Is>
|
|
408
|
+
inline constexpr std::array<T, sizeof...(Is)>
|
|
409
|
+
array_from_scalar_impl(const T& scalar, index_sequence<Is...>) noexcept
|
|
410
|
+
{
|
|
411
|
+
// You can safely ignore this silly ternary, the "scalar" is all
|
|
412
|
+
// that matters. The rest is just a dirty workaround...
|
|
413
|
+
return std::array<T, sizeof...(Is)> { (Is + 1) ? scalar : T()... };
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
template <typename T, std::size_t N>
|
|
417
|
+
inline constexpr std::array<T, N>
|
|
418
|
+
array_from_scalar(const T& scalar) noexcept
|
|
419
|
+
{
|
|
420
|
+
return array_from_scalar_impl(scalar, make_index_sequence<N>());
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// std::array constructor from C-style pointer (handled as an array)
|
|
424
|
+
template <typename T, std::size_t... Is>
|
|
425
|
+
inline constexpr std::array<T, sizeof...(Is)>
|
|
426
|
+
array_from_pointer_impl(const T* c_array, index_sequence<Is...>) noexcept
|
|
427
|
+
{
|
|
428
|
+
return std::array<T, sizeof...(Is)> { c_array[Is]... };
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
template <typename T, std::size_t N>
|
|
432
|
+
inline constexpr std::array<T, N>
|
|
433
|
+
array_from_pointer(const T* c_array) noexcept
|
|
434
|
+
{
|
|
435
|
+
return array_from_pointer_impl(c_array, make_index_sequence<N>());
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/************************
|
|
440
|
+
* is_array_initializer *
|
|
441
|
+
************************/
|
|
442
|
+
|
|
443
|
+
namespace detail
|
|
444
|
+
{
|
|
445
|
+
template <bool...>
|
|
446
|
+
struct bool_pack;
|
|
447
|
+
|
|
448
|
+
template <bool... bs>
|
|
449
|
+
using all_true = std::is_same<
|
|
450
|
+
bool_pack<bs..., true>, bool_pack<true, bs...>>;
|
|
451
|
+
|
|
452
|
+
template <typename T, typename... Args>
|
|
453
|
+
using is_all_convertible = all_true<std::is_convertible<Args, T>::value...>;
|
|
454
|
+
|
|
455
|
+
template <typename T, std::size_t N, typename... Args>
|
|
456
|
+
using is_array_initializer = std::enable_if<
|
|
457
|
+
(sizeof...(Args) == N) && is_all_convertible<T, Args...>::value>;
|
|
458
|
+
|
|
459
|
+
// Check that a variadic argument pack is a list of N values of type T,
|
|
460
|
+
// as usable for instantiating a value of type std::array<T, N>.
|
|
461
|
+
template <typename T, std::size_t N, typename... Args>
|
|
462
|
+
using is_array_initializer_t = typename is_array_initializer<T, N, Args...>::type;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**************
|
|
466
|
+
* is_complex *
|
|
467
|
+
**************/
|
|
468
|
+
|
|
469
|
+
// This is used in both xsimd_complex_base.hpp and xsimd_traits.hpp
|
|
470
|
+
// However xsimd_traits.hpp indirectly includes xsimd_complex_base.hpp
|
|
471
|
+
// so we cannot define is_complex in xsimd_traits.hpp. Besides, if
|
|
472
|
+
// no file defining batches is included, we still need this definition
|
|
473
|
+
// in xsimd_traits.hpp, so let's define it here.
|
|
474
|
+
|
|
475
|
+
namespace detail
|
|
476
|
+
{
|
|
477
|
+
template <class T>
|
|
478
|
+
struct is_complex : std::false_type
|
|
479
|
+
{
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
template <class T>
|
|
483
|
+
struct is_complex<std::complex<T>> : std::true_type
|
|
484
|
+
{
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
#ifdef XSIMD_ENABLE_XTL_COMPLEX
|
|
488
|
+
template <class T, bool i3ec>
|
|
489
|
+
struct is_complex<xtl::xcomplex<T, T, i3ec>> : std::true_type
|
|
490
|
+
{
|
|
491
|
+
};
|
|
492
|
+
#endif
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/*******************
|
|
496
|
+
* real_batch_type *
|
|
497
|
+
*******************/
|
|
498
|
+
|
|
499
|
+
template <class B>
|
|
500
|
+
struct real_batch_type
|
|
501
|
+
{
|
|
502
|
+
using type = B;
|
|
503
|
+
};
|
|
504
|
+
|
|
505
|
+
template <class T, class A>
|
|
506
|
+
struct real_batch_type<batch<std::complex<T>, A>>
|
|
507
|
+
{
|
|
508
|
+
using type = batch<T, A>;
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
template <class B>
|
|
512
|
+
using real_batch_type_t = typename real_batch_type<B>::type;
|
|
513
|
+
|
|
514
|
+
/**********************
|
|
515
|
+
* complex_batch_type *
|
|
516
|
+
**********************/
|
|
517
|
+
|
|
518
|
+
template <class B>
|
|
519
|
+
struct complex_batch_type
|
|
520
|
+
{
|
|
521
|
+
using real_value_type = typename B::value_type;
|
|
522
|
+
using arch_type = typename B::arch_type;
|
|
523
|
+
using type = batch<std::complex<real_value_type>, arch_type>;
|
|
524
|
+
};
|
|
525
|
+
|
|
526
|
+
template <class T, class A>
|
|
527
|
+
struct complex_batch_type<batch<std::complex<T>, A>>
|
|
528
|
+
{
|
|
529
|
+
using type = batch<std::complex<T>, A>;
|
|
530
|
+
};
|
|
531
|
+
|
|
532
|
+
template <class B>
|
|
533
|
+
using complex_batch_type_t = typename complex_batch_type<B>::type;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
#endif
|
|
@@ -0,0 +1,77 @@
|
|
|
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_VSX_REGISTER_HPP
|
|
13
|
+
#define XSIMD_VSX_REGISTER_HPP
|
|
14
|
+
|
|
15
|
+
#include "./xsimd_common_arch.hpp"
|
|
16
|
+
#include "./xsimd_register.hpp"
|
|
17
|
+
|
|
18
|
+
#if XSIMD_WITH_VSX
|
|
19
|
+
#include <altivec.h>
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
namespace xsimd
|
|
23
|
+
{
|
|
24
|
+
/**
|
|
25
|
+
* @ingroup architectures
|
|
26
|
+
*
|
|
27
|
+
* VSX instructions
|
|
28
|
+
*/
|
|
29
|
+
struct vsx : common
|
|
30
|
+
{
|
|
31
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_VSX; }
|
|
32
|
+
static constexpr bool available() noexcept { return true; }
|
|
33
|
+
static constexpr bool requires_alignment() noexcept { return true; }
|
|
34
|
+
static constexpr std::size_t alignment() noexcept { return 16; }
|
|
35
|
+
static constexpr char const* name() noexcept { return "vmx+vsx"; }
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
#if XSIMD_WITH_VSX
|
|
39
|
+
namespace types
|
|
40
|
+
{
|
|
41
|
+
|
|
42
|
+
#define XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(T, Tb) \
|
|
43
|
+
template <> \
|
|
44
|
+
struct get_bool_simd_register<T, vsx> \
|
|
45
|
+
{ \
|
|
46
|
+
struct type \
|
|
47
|
+
{ \
|
|
48
|
+
using register_type = __vector __bool Tb; \
|
|
49
|
+
register_type data; \
|
|
50
|
+
type() = default; \
|
|
51
|
+
type(register_type r) \
|
|
52
|
+
: data(r) \
|
|
53
|
+
{ \
|
|
54
|
+
} \
|
|
55
|
+
operator register_type() const noexcept { return data; } \
|
|
56
|
+
}; \
|
|
57
|
+
}; \
|
|
58
|
+
XSIMD_DECLARE_SIMD_REGISTER(T, vsx, __vector T)
|
|
59
|
+
|
|
60
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(signed char, char);
|
|
61
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(unsigned char, char);
|
|
62
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(char, char);
|
|
63
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(unsigned short, short);
|
|
64
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(short, short);
|
|
65
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(unsigned int, int);
|
|
66
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(int, int);
|
|
67
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(unsigned long, long);
|
|
68
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(long, long);
|
|
69
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(float, int);
|
|
70
|
+
XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(double, long);
|
|
71
|
+
|
|
72
|
+
#undef XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER
|
|
73
|
+
}
|
|
74
|
+
#endif
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#endif
|
|
@@ -0,0 +1,59 @@
|
|
|
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) Anutosh Bhat *
|
|
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_WASM_REGISTER_HPP
|
|
14
|
+
#define XSIMD_WASM_REGISTER_HPP
|
|
15
|
+
|
|
16
|
+
#include "xsimd_common_arch.hpp"
|
|
17
|
+
#include "xsimd_register.hpp"
|
|
18
|
+
|
|
19
|
+
#if XSIMD_WITH_WASM
|
|
20
|
+
#include <wasm_simd128.h>
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
namespace xsimd
|
|
24
|
+
{
|
|
25
|
+
/**
|
|
26
|
+
* @ingroup architectures
|
|
27
|
+
*
|
|
28
|
+
* WASM instructions
|
|
29
|
+
*/
|
|
30
|
+
struct wasm : common
|
|
31
|
+
{
|
|
32
|
+
static constexpr bool supported() noexcept { return XSIMD_WITH_WASM; }
|
|
33
|
+
static constexpr bool available() noexcept { return true; }
|
|
34
|
+
static constexpr bool requires_alignment() noexcept { return true; }
|
|
35
|
+
static constexpr std::size_t alignment() noexcept { return 16; }
|
|
36
|
+
static constexpr char const* name() noexcept { return "wasm"; }
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
#if XSIMD_WITH_WASM
|
|
40
|
+
namespace types
|
|
41
|
+
{
|
|
42
|
+
XSIMD_DECLARE_SIMD_REGISTER(signed char, wasm, v128_t);
|
|
43
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned char, wasm, v128_t);
|
|
44
|
+
XSIMD_DECLARE_SIMD_REGISTER(char, wasm, v128_t);
|
|
45
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned short, wasm, v128_t);
|
|
46
|
+
XSIMD_DECLARE_SIMD_REGISTER(short, wasm, v128_t);
|
|
47
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned int, wasm, v128_t);
|
|
48
|
+
XSIMD_DECLARE_SIMD_REGISTER(int, wasm, v128_t);
|
|
49
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned long int, wasm, v128_t);
|
|
50
|
+
XSIMD_DECLARE_SIMD_REGISTER(long int, wasm, v128_t);
|
|
51
|
+
XSIMD_DECLARE_SIMD_REGISTER(unsigned long long int, wasm, v128_t);
|
|
52
|
+
XSIMD_DECLARE_SIMD_REGISTER(long long int, wasm, v128_t);
|
|
53
|
+
XSIMD_DECLARE_SIMD_REGISTER(float, wasm, v128_t);
|
|
54
|
+
XSIMD_DECLARE_SIMD_REGISTER(double, wasm, v128_t);
|
|
55
|
+
}
|
|
56
|
+
#endif
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#endif
|