sequenzo 0.1.31__cp310-cp310-macosx_10_9_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. _sequenzo_fastcluster.cpython-310-darwin.so +0 -0
  2. sequenzo/__init__.py +349 -0
  3. sequenzo/big_data/__init__.py +12 -0
  4. sequenzo/big_data/clara/__init__.py +26 -0
  5. sequenzo/big_data/clara/clara.py +476 -0
  6. sequenzo/big_data/clara/utils/__init__.py +27 -0
  7. sequenzo/big_data/clara/utils/aggregatecases.py +92 -0
  8. sequenzo/big_data/clara/utils/davies_bouldin.py +91 -0
  9. sequenzo/big_data/clara/utils/get_weighted_diss.cpython-310-darwin.so +0 -0
  10. sequenzo/big_data/clara/utils/wfcmdd.py +205 -0
  11. sequenzo/big_data/clara/visualization.py +88 -0
  12. sequenzo/clustering/KMedoids.py +178 -0
  13. sequenzo/clustering/__init__.py +30 -0
  14. sequenzo/clustering/clustering_c_code.cpython-310-darwin.so +0 -0
  15. sequenzo/clustering/hierarchical_clustering.py +1256 -0
  16. sequenzo/clustering/sequenzo_fastcluster/fastcluster.py +495 -0
  17. sequenzo/clustering/sequenzo_fastcluster/src/fastcluster.cpp +1877 -0
  18. sequenzo/clustering/sequenzo_fastcluster/src/fastcluster_python.cpp +1264 -0
  19. sequenzo/clustering/src/KMedoid.cpp +263 -0
  20. sequenzo/clustering/src/PAM.cpp +237 -0
  21. sequenzo/clustering/src/PAMonce.cpp +265 -0
  22. sequenzo/clustering/src/cluster_quality.cpp +496 -0
  23. sequenzo/clustering/src/cluster_quality.h +128 -0
  24. sequenzo/clustering/src/cluster_quality_backup.cpp +570 -0
  25. sequenzo/clustering/src/module.cpp +228 -0
  26. sequenzo/clustering/src/weightedinertia.cpp +111 -0
  27. sequenzo/clustering/utils/__init__.py +27 -0
  28. sequenzo/clustering/utils/disscenter.py +122 -0
  29. sequenzo/data_preprocessing/__init__.py +22 -0
  30. sequenzo/data_preprocessing/helpers.py +303 -0
  31. sequenzo/datasets/__init__.py +41 -0
  32. sequenzo/datasets/biofam.csv +2001 -0
  33. sequenzo/datasets/biofam_child_domain.csv +2001 -0
  34. sequenzo/datasets/biofam_left_domain.csv +2001 -0
  35. sequenzo/datasets/biofam_married_domain.csv +2001 -0
  36. sequenzo/datasets/chinese_colonial_territories.csv +12 -0
  37. sequenzo/datasets/country_co2_emissions.csv +194 -0
  38. sequenzo/datasets/country_co2_emissions_global_deciles.csv +195 -0
  39. sequenzo/datasets/country_co2_emissions_global_quintiles.csv +195 -0
  40. sequenzo/datasets/country_co2_emissions_local_deciles.csv +195 -0
  41. sequenzo/datasets/country_co2_emissions_local_quintiles.csv +195 -0
  42. sequenzo/datasets/country_gdp_per_capita.csv +194 -0
  43. sequenzo/datasets/dyadic_children.csv +61 -0
  44. sequenzo/datasets/dyadic_parents.csv +61 -0
  45. sequenzo/datasets/mvad.csv +713 -0
  46. sequenzo/datasets/pairfam_activity_by_month.csv +1028 -0
  47. sequenzo/datasets/pairfam_activity_by_year.csv +1028 -0
  48. sequenzo/datasets/pairfam_family_by_month.csv +1028 -0
  49. sequenzo/datasets/pairfam_family_by_year.csv +1028 -0
  50. sequenzo/datasets/political_science_aid_shock.csv +166 -0
  51. sequenzo/datasets/political_science_donor_fragmentation.csv +157 -0
  52. sequenzo/define_sequence_data.py +1400 -0
  53. sequenzo/dissimilarity_measures/__init__.py +31 -0
  54. sequenzo/dissimilarity_measures/c_code.cpython-310-darwin.so +0 -0
  55. sequenzo/dissimilarity_measures/get_distance_matrix.py +762 -0
  56. sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +246 -0
  57. sequenzo/dissimilarity_measures/src/DHDdistance.cpp +148 -0
  58. sequenzo/dissimilarity_measures/src/LCPdistance.cpp +114 -0
  59. sequenzo/dissimilarity_measures/src/LCPspellDistance.cpp +215 -0
  60. sequenzo/dissimilarity_measures/src/OMdistance.cpp +247 -0
  61. sequenzo/dissimilarity_measures/src/OMspellDistance.cpp +281 -0
  62. sequenzo/dissimilarity_measures/src/__init__.py +0 -0
  63. sequenzo/dissimilarity_measures/src/dist2matrix.cpp +63 -0
  64. sequenzo/dissimilarity_measures/src/dp_utils.h +160 -0
  65. sequenzo/dissimilarity_measures/src/module.cpp +40 -0
  66. sequenzo/dissimilarity_measures/src/setup.py +30 -0
  67. sequenzo/dissimilarity_measures/src/utils.h +25 -0
  68. sequenzo/dissimilarity_measures/src/xsimd/.github/cmake-test/main.cpp +6 -0
  69. sequenzo/dissimilarity_measures/src/xsimd/benchmark/main.cpp +159 -0
  70. sequenzo/dissimilarity_measures/src/xsimd/benchmark/xsimd_benchmark.hpp +565 -0
  71. sequenzo/dissimilarity_measures/src/xsimd/docs/source/conf.py +37 -0
  72. sequenzo/dissimilarity_measures/src/xsimd/examples/mandelbrot.cpp +330 -0
  73. sequenzo/dissimilarity_measures/src/xsimd/examples/pico_bench.hpp +246 -0
  74. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_arithmetic.hpp +266 -0
  75. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_complex.hpp +112 -0
  76. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_details.hpp +323 -0
  77. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_logical.hpp +218 -0
  78. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_math.hpp +2583 -0
  79. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_memory.hpp +880 -0
  80. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_rounding.hpp +72 -0
  81. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_swizzle.hpp +174 -0
  82. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_trigo.hpp +978 -0
  83. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx.hpp +1924 -0
  84. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx2.hpp +1144 -0
  85. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512bw.hpp +656 -0
  86. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512cd.hpp +28 -0
  87. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512dq.hpp +244 -0
  88. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512er.hpp +20 -0
  89. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512f.hpp +2650 -0
  90. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512ifma.hpp +20 -0
  91. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512pf.hpp +20 -0
  92. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi.hpp +77 -0
  93. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi2.hpp +131 -0
  94. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512bw.hpp +20 -0
  95. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp +20 -0
  96. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avxvnni.hpp +20 -0
  97. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common.hpp +24 -0
  98. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common_fwd.hpp +77 -0
  99. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_constants.hpp +393 -0
  100. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_emulated.hpp +788 -0
  101. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx.hpp +93 -0
  102. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx2.hpp +46 -0
  103. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_sse.hpp +97 -0
  104. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma4.hpp +92 -0
  105. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_i8mm_neon64.hpp +17 -0
  106. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_isa.hpp +142 -0
  107. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon.hpp +3142 -0
  108. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon64.hpp +1543 -0
  109. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_rvv.hpp +1513 -0
  110. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_scalar.hpp +1260 -0
  111. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse2.hpp +2024 -0
  112. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse3.hpp +67 -0
  113. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_1.hpp +339 -0
  114. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_2.hpp +44 -0
  115. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_ssse3.hpp +186 -0
  116. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sve.hpp +1155 -0
  117. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_vsx.hpp +892 -0
  118. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_wasm.hpp +1780 -0
  119. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_arch.hpp +240 -0
  120. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_config.hpp +484 -0
  121. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_cpuid.hpp +269 -0
  122. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_inline.hpp +27 -0
  123. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/math/xsimd_rem_pio2.hpp +719 -0
  124. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_aligned_allocator.hpp +349 -0
  125. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_alignment.hpp +91 -0
  126. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_all_registers.hpp +55 -0
  127. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_api.hpp +2765 -0
  128. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx2_register.hpp +44 -0
  129. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512bw_register.hpp +51 -0
  130. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512cd_register.hpp +51 -0
  131. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512dq_register.hpp +51 -0
  132. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512er_register.hpp +51 -0
  133. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512f_register.hpp +77 -0
  134. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512ifma_register.hpp +51 -0
  135. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512pf_register.hpp +51 -0
  136. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi2_register.hpp +51 -0
  137. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi_register.hpp +51 -0
  138. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512bw_register.hpp +54 -0
  139. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp +53 -0
  140. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx_register.hpp +64 -0
  141. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avxvnni_register.hpp +44 -0
  142. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch.hpp +1524 -0
  143. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch_constant.hpp +300 -0
  144. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_common_arch.hpp +47 -0
  145. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_emulated_register.hpp +80 -0
  146. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx2_register.hpp +50 -0
  147. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx_register.hpp +50 -0
  148. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_sse_register.hpp +50 -0
  149. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma4_register.hpp +50 -0
  150. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_i8mm_neon64_register.hpp +55 -0
  151. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon64_register.hpp +55 -0
  152. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon_register.hpp +154 -0
  153. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_register.hpp +94 -0
  154. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_rvv_register.hpp +506 -0
  155. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse2_register.hpp +59 -0
  156. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse3_register.hpp +49 -0
  157. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_1_register.hpp +48 -0
  158. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_2_register.hpp +48 -0
  159. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_ssse3_register.hpp +48 -0
  160. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sve_register.hpp +156 -0
  161. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_traits.hpp +337 -0
  162. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_utils.hpp +536 -0
  163. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_vsx_register.hpp +77 -0
  164. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_wasm_register.hpp +59 -0
  165. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/xsimd.hpp +75 -0
  166. sequenzo/dissimilarity_measures/src/xsimd/test/architectures/dummy.cpp +7 -0
  167. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set.cpp +13 -0
  168. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean.cpp +24 -0
  169. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_aligned.cpp +25 -0
  170. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_arch_independent.cpp +28 -0
  171. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_tag_dispatch.cpp +25 -0
  172. sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_abstract_batches.cpp +7 -0
  173. sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_parametric_batches.cpp +8 -0
  174. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum.hpp +31 -0
  175. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_avx2.cpp +3 -0
  176. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_sse2.cpp +3 -0
  177. sequenzo/dissimilarity_measures/src/xsimd/test/doc/writing_vectorized_code.cpp +11 -0
  178. sequenzo/dissimilarity_measures/src/xsimd/test/main.cpp +31 -0
  179. sequenzo/dissimilarity_measures/src/xsimd/test/test_api.cpp +230 -0
  180. sequenzo/dissimilarity_measures/src/xsimd/test/test_arch.cpp +217 -0
  181. sequenzo/dissimilarity_measures/src/xsimd/test/test_basic_math.cpp +183 -0
  182. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch.cpp +1049 -0
  183. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_bool.cpp +508 -0
  184. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_cast.cpp +409 -0
  185. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_complex.cpp +712 -0
  186. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_constant.cpp +286 -0
  187. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_float.cpp +141 -0
  188. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_int.cpp +365 -0
  189. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_manip.cpp +308 -0
  190. sequenzo/dissimilarity_measures/src/xsimd/test/test_bitwise_cast.cpp +222 -0
  191. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_exponential.cpp +226 -0
  192. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_hyperbolic.cpp +183 -0
  193. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_power.cpp +265 -0
  194. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_trigonometric.cpp +236 -0
  195. sequenzo/dissimilarity_measures/src/xsimd/test/test_conversion.cpp +248 -0
  196. sequenzo/dissimilarity_measures/src/xsimd/test/test_custom_default_arch.cpp +28 -0
  197. sequenzo/dissimilarity_measures/src/xsimd/test/test_error_gamma.cpp +170 -0
  198. sequenzo/dissimilarity_measures/src/xsimd/test/test_explicit_batch_instantiation.cpp +32 -0
  199. sequenzo/dissimilarity_measures/src/xsimd/test/test_exponential.cpp +202 -0
  200. sequenzo/dissimilarity_measures/src/xsimd/test/test_extract_pair.cpp +92 -0
  201. sequenzo/dissimilarity_measures/src/xsimd/test/test_fp_manipulation.cpp +77 -0
  202. sequenzo/dissimilarity_measures/src/xsimd/test/test_gnu_source.cpp +30 -0
  203. sequenzo/dissimilarity_measures/src/xsimd/test/test_hyperbolic.cpp +167 -0
  204. sequenzo/dissimilarity_measures/src/xsimd/test/test_load_store.cpp +304 -0
  205. sequenzo/dissimilarity_measures/src/xsimd/test/test_memory.cpp +61 -0
  206. sequenzo/dissimilarity_measures/src/xsimd/test/test_poly_evaluation.cpp +64 -0
  207. sequenzo/dissimilarity_measures/src/xsimd/test/test_power.cpp +184 -0
  208. sequenzo/dissimilarity_measures/src/xsimd/test/test_rounding.cpp +199 -0
  209. sequenzo/dissimilarity_measures/src/xsimd/test/test_select.cpp +101 -0
  210. sequenzo/dissimilarity_measures/src/xsimd/test/test_shuffle.cpp +760 -0
  211. sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.cpp +4 -0
  212. sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.hpp +34 -0
  213. sequenzo/dissimilarity_measures/src/xsimd/test/test_traits.cpp +172 -0
  214. sequenzo/dissimilarity_measures/src/xsimd/test/test_trigonometric.cpp +208 -0
  215. sequenzo/dissimilarity_measures/src/xsimd/test/test_utils.hpp +611 -0
  216. sequenzo/dissimilarity_measures/src/xsimd/test/test_wasm/test_wasm_playwright.py +123 -0
  217. sequenzo/dissimilarity_measures/src/xsimd/test/test_xsimd_api.cpp +1460 -0
  218. sequenzo/dissimilarity_measures/utils/__init__.py +16 -0
  219. sequenzo/dissimilarity_measures/utils/get_LCP_length_for_2_seq.py +44 -0
  220. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.cpython-310-darwin.so +0 -0
  221. sequenzo/dissimilarity_measures/utils/seqconc.cpython-310-darwin.so +0 -0
  222. sequenzo/dissimilarity_measures/utils/seqdss.cpython-310-darwin.so +0 -0
  223. sequenzo/dissimilarity_measures/utils/seqdur.cpython-310-darwin.so +0 -0
  224. sequenzo/dissimilarity_measures/utils/seqlength.cpython-310-darwin.so +0 -0
  225. sequenzo/multidomain/__init__.py +23 -0
  226. sequenzo/multidomain/association_between_domains.py +311 -0
  227. sequenzo/multidomain/cat.py +597 -0
  228. sequenzo/multidomain/combt.py +519 -0
  229. sequenzo/multidomain/dat.py +81 -0
  230. sequenzo/multidomain/idcd.py +139 -0
  231. sequenzo/multidomain/linked_polyad.py +292 -0
  232. sequenzo/openmp_setup.py +233 -0
  233. sequenzo/prefix_tree/__init__.py +62 -0
  234. sequenzo/prefix_tree/hub.py +114 -0
  235. sequenzo/prefix_tree/individual_level_indicators.py +1321 -0
  236. sequenzo/prefix_tree/spell_individual_level_indicators.py +580 -0
  237. sequenzo/prefix_tree/spell_level_indicators.py +297 -0
  238. sequenzo/prefix_tree/system_level_indicators.py +544 -0
  239. sequenzo/prefix_tree/utils.py +54 -0
  240. sequenzo/seqhmm/__init__.py +95 -0
  241. sequenzo/seqhmm/advanced_optimization.py +305 -0
  242. sequenzo/seqhmm/bootstrap.py +411 -0
  243. sequenzo/seqhmm/build_hmm.py +142 -0
  244. sequenzo/seqhmm/build_mhmm.py +136 -0
  245. sequenzo/seqhmm/build_nhmm.py +121 -0
  246. sequenzo/seqhmm/fit_mhmm.py +62 -0
  247. sequenzo/seqhmm/fit_model.py +61 -0
  248. sequenzo/seqhmm/fit_nhmm.py +76 -0
  249. sequenzo/seqhmm/formulas.py +289 -0
  250. sequenzo/seqhmm/forward_backward_nhmm.py +276 -0
  251. sequenzo/seqhmm/gradients_nhmm.py +306 -0
  252. sequenzo/seqhmm/hmm.py +291 -0
  253. sequenzo/seqhmm/mhmm.py +314 -0
  254. sequenzo/seqhmm/model_comparison.py +238 -0
  255. sequenzo/seqhmm/multichannel_em.py +282 -0
  256. sequenzo/seqhmm/multichannel_utils.py +138 -0
  257. sequenzo/seqhmm/nhmm.py +270 -0
  258. sequenzo/seqhmm/nhmm_utils.py +191 -0
  259. sequenzo/seqhmm/predict.py +137 -0
  260. sequenzo/seqhmm/predict_mhmm.py +142 -0
  261. sequenzo/seqhmm/simulate.py +878 -0
  262. sequenzo/seqhmm/utils.py +218 -0
  263. sequenzo/seqhmm/visualization.py +910 -0
  264. sequenzo/sequence_characteristics/__init__.py +40 -0
  265. sequenzo/sequence_characteristics/complexity_index.py +49 -0
  266. sequenzo/sequence_characteristics/overall_cross_sectional_entropy.py +220 -0
  267. sequenzo/sequence_characteristics/plot_characteristics.py +593 -0
  268. sequenzo/sequence_characteristics/simple_characteristics.py +311 -0
  269. sequenzo/sequence_characteristics/state_frequencies_and_entropy_per_sequence.py +39 -0
  270. sequenzo/sequence_characteristics/turbulence.py +155 -0
  271. sequenzo/sequence_characteristics/variance_of_spell_durations.py +86 -0
  272. sequenzo/sequence_characteristics/within_sequence_entropy.py +43 -0
  273. sequenzo/suffix_tree/__init__.py +66 -0
  274. sequenzo/suffix_tree/hub.py +114 -0
  275. sequenzo/suffix_tree/individual_level_indicators.py +1679 -0
  276. sequenzo/suffix_tree/spell_individual_level_indicators.py +493 -0
  277. sequenzo/suffix_tree/spell_level_indicators.py +248 -0
  278. sequenzo/suffix_tree/system_level_indicators.py +535 -0
  279. sequenzo/suffix_tree/utils.py +56 -0
  280. sequenzo/version_check.py +283 -0
  281. sequenzo/visualization/__init__.py +29 -0
  282. sequenzo/visualization/plot_mean_time.py +222 -0
  283. sequenzo/visualization/plot_modal_state.py +276 -0
  284. sequenzo/visualization/plot_most_frequent_sequences.py +147 -0
  285. sequenzo/visualization/plot_relative_frequency.py +405 -0
  286. sequenzo/visualization/plot_sequence_index.py +1175 -0
  287. sequenzo/visualization/plot_single_medoid.py +153 -0
  288. sequenzo/visualization/plot_state_distribution.py +651 -0
  289. sequenzo/visualization/plot_transition_matrix.py +190 -0
  290. sequenzo/visualization/utils/__init__.py +23 -0
  291. sequenzo/visualization/utils/utils.py +310 -0
  292. sequenzo/with_event_history_analysis/__init__.py +35 -0
  293. sequenzo/with_event_history_analysis/sequence_analysis_multi_state_model.py +850 -0
  294. sequenzo/with_event_history_analysis/sequence_history_analysis.py +283 -0
  295. sequenzo-0.1.31.dist-info/METADATA +286 -0
  296. sequenzo-0.1.31.dist-info/RECORD +299 -0
  297. sequenzo-0.1.31.dist-info/WHEEL +5 -0
  298. sequenzo-0.1.31.dist-info/licenses/LICENSE +28 -0
  299. sequenzo-0.1.31.dist-info/top_level.txt +2 -0
@@ -0,0 +1,611 @@
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
+
14
+ #include <array>
15
+ #include <climits>
16
+ #include <cmath>
17
+ #include <complex>
18
+ #include <limits>
19
+ #include <type_traits>
20
+ #include <vector>
21
+
22
+ #include "doctest/doctest.h"
23
+
24
+ #ifndef XSIMD_TEST_UTILS_HPP
25
+ #define XSIMD_TEST_UTILS_HPP
26
+
27
+ /**************************
28
+ * AppleClang workarounds *
29
+ *************************/
30
+
31
+ // AppleClang is known for having precision issues
32
+ // in the gamma function codegen. It's known to happen
33
+ // between AVX and AVX2, but it also happens on SSE4.1
34
+ // in GitHub Actions.
35
+ // This also seems to happen in M1.
36
+ struct precision_t
37
+ {
38
+ #if defined(__apple_build_version__) && (XSIMD_WITH_SSE4_1 || XSIMD_WITH_NEON64)
39
+ static constexpr size_t max = 8192;
40
+ #else
41
+ static constexpr size_t max = 2048;
42
+ #endif
43
+ };
44
+
45
+ /*******************
46
+ * Pretty printers *
47
+ *******************/
48
+
49
+ class simd_test_names
50
+ {
51
+ public:
52
+ template <class T>
53
+ static std::string GetName(int)
54
+ {
55
+ using value_type = typename T::value_type;
56
+ std::string prefix;
57
+ #if XSIMD_WITH_SSE
58
+ size_t register_size = T::size * sizeof(value_type) * CHAR_BIT;
59
+ if (register_size == size_t(128))
60
+ {
61
+ prefix = "sse_";
62
+ }
63
+ else if (register_size == size_t(256))
64
+ {
65
+ prefix = "avx_";
66
+ }
67
+ else if (register_size == size_t(512))
68
+ {
69
+ prefix = "avx512_";
70
+ }
71
+ #elif XSIMD_WITH_NEON
72
+ size_t register_size = T::size * sizeof(value_type) * CHAR_BIT;
73
+ if (register_size == size_t(128))
74
+ {
75
+ prefix = "arm_";
76
+ }
77
+ #endif
78
+ if (std::is_same<value_type, uint8_t>::value)
79
+ {
80
+ return prefix + "uint8_t";
81
+ }
82
+ if (std::is_same<value_type, int8_t>::value)
83
+ {
84
+ return prefix + "int8_t";
85
+ }
86
+ if (std::is_same<value_type, uint16_t>::value)
87
+ {
88
+ return prefix + "uint16_t";
89
+ }
90
+ if (std::is_same<value_type, int16_t>::value)
91
+ {
92
+ return prefix + "int16_t";
93
+ }
94
+ if (std::is_same<value_type, uint32_t>::value)
95
+ {
96
+ return prefix + "uint32_t";
97
+ }
98
+ if (std::is_same<value_type, int32_t>::value)
99
+ {
100
+ return prefix + "int32_t";
101
+ }
102
+ if (std::is_same<value_type, uint64_t>::value)
103
+ {
104
+ return prefix + "uint64_t";
105
+ }
106
+ if (std::is_same<value_type, int64_t>::value)
107
+ {
108
+ return prefix + "int64_t";
109
+ }
110
+ if (std::is_same<value_type, float>::value)
111
+ {
112
+ return prefix + "float";
113
+ }
114
+ if (std::is_same<value_type, double>::value)
115
+ {
116
+ return prefix + "double";
117
+ }
118
+ if (std::is_same<value_type, std::complex<float>>::value)
119
+ {
120
+ return prefix + "complex<float>";
121
+ }
122
+ if (std::is_same<value_type, std::complex<double>>::value)
123
+ {
124
+ return prefix + "complex<double>";
125
+ }
126
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
127
+ if (std::is_same<value_type, xtl::xcomplex<float>>::value)
128
+ {
129
+ return prefix + "xcomplex<float>";
130
+ }
131
+ if (std::is_same<value_type, xtl::xcomplex<double>>::value)
132
+ {
133
+ return prefix + "xcomplex<double>";
134
+ }
135
+ #endif
136
+
137
+ return prefix + "unknow_type";
138
+ }
139
+ };
140
+
141
+ inline std::string print_function_name(const std::string& func)
142
+ {
143
+ return std::string(" while testing ") + func;
144
+ }
145
+
146
+ /************************
147
+ * Comparison functions *
148
+ ************************/
149
+
150
+ namespace xsimd
151
+ {
152
+ template <class T, class A, size_t N>
153
+ inline bool operator==(const batch<T, A>& lhs, const std::array<T, N>& rhs)
154
+ {
155
+ alignas(A::alignment()) std::array<T, N> tmp;
156
+ lhs.store_aligned(tmp.data());
157
+ return tmp == rhs;
158
+ }
159
+
160
+ template <class T, class A, size_t N>
161
+ inline bool operator==(const std::array<T, N>& lhs, const batch<T, A>& rhs)
162
+ {
163
+ return rhs == lhs;
164
+ }
165
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
166
+ template <class T, class A, size_t N, bool i3ec>
167
+ inline bool operator==(const batch<std::complex<T>, A>& lhs, const std::array<xtl::xcomplex<T, T, i3ec>, N>& rhs)
168
+ {
169
+ alignas(A::alignment()) std::array<xtl::xcomplex<T, T, i3ec>, N> tmp;
170
+ lhs.store_aligned(tmp.data());
171
+ return tmp == rhs;
172
+ }
173
+
174
+ template <class T, class A, size_t N, bool i3ec>
175
+ inline bool operator==(const std::array<xtl::xcomplex<T, T, i3ec>, N>& lhs, const batch<std::complex<T>, A>& rhs)
176
+ {
177
+ return rhs == lhs;
178
+ }
179
+ #endif
180
+ }
181
+
182
+ namespace detail
183
+ {
184
+ #ifndef __FAST_MATH__
185
+ namespace utils
186
+ {
187
+ // define some overloads here as integer versions do not exist for msvc
188
+ template <class T>
189
+ inline typename std::enable_if<!std::is_integral<T>::value, bool>::type isinf(const T& c)
190
+ {
191
+ return std::isinf(c);
192
+ }
193
+
194
+ template <class T>
195
+ inline typename std::enable_if<std::is_integral<T>::value, bool>::type isinf(const T&)
196
+ {
197
+ return false;
198
+ }
199
+
200
+ template <class T>
201
+ inline typename std::enable_if<!std::is_integral<T>::value, bool>::type isnan(const T& c)
202
+ {
203
+ return std::isnan(c);
204
+ }
205
+
206
+ template <class T>
207
+ inline typename std::enable_if<std::is_integral<T>::value, bool>::type isnan(const T&)
208
+ {
209
+ return false;
210
+ }
211
+ }
212
+ #endif
213
+
214
+ inline unsigned char uabs(unsigned char val)
215
+ {
216
+ return val;
217
+ }
218
+
219
+ inline unsigned short uabs(unsigned short val)
220
+ {
221
+ return val;
222
+ }
223
+
224
+ inline unsigned int uabs(unsigned int val)
225
+ {
226
+ return val;
227
+ }
228
+
229
+ inline unsigned long uabs(unsigned long val)
230
+ {
231
+ return val;
232
+ }
233
+
234
+ inline unsigned long long uabs(unsigned long long val)
235
+ {
236
+ return val;
237
+ }
238
+
239
+ template <class T>
240
+ inline T uabs(T val)
241
+ {
242
+ return std::abs(val);
243
+ }
244
+
245
+ template <class T>
246
+ bool check_is_small(const T& value, const T& tolerance)
247
+ {
248
+ using std::abs;
249
+ return uabs(value) < uabs(tolerance);
250
+ }
251
+
252
+ template <class T>
253
+ T safe_division(const T& lhs, const T& rhs)
254
+ {
255
+ if (rhs == T(0))
256
+ {
257
+ return (std::numeric_limits<T>::max)();
258
+ }
259
+ if (rhs < static_cast<T>(1) && lhs > rhs * (std::numeric_limits<T>::max)())
260
+ {
261
+ return (std::numeric_limits<T>::max)();
262
+ }
263
+ if ((lhs == static_cast<T>(0)) || (rhs > static_cast<T>(1) && lhs < rhs * (std::numeric_limits<T>::min)()))
264
+ {
265
+ return static_cast<T>(0);
266
+ }
267
+ return lhs / rhs;
268
+ }
269
+
270
+ template <class T>
271
+ bool check_is_close(const T& lhs, const T& rhs, const T& relative_precision)
272
+ {
273
+ using std::abs;
274
+ T diff = uabs(lhs - rhs);
275
+ T d1 = safe_division(diff, T(uabs(rhs)));
276
+ T d2 = safe_division(diff, T(uabs(lhs)));
277
+
278
+ return d1 <= relative_precision && d2 <= relative_precision;
279
+ }
280
+
281
+ template <class T>
282
+ struct scalar_comparison_near
283
+ {
284
+ static bool run(const T& lhs, const T& rhs)
285
+ {
286
+ using std::abs;
287
+ using std::max;
288
+
289
+ // direct compare integers -- but need tolerance for inexact double conversion
290
+ if (std::is_integral<T>::value && lhs < 10e6 && rhs < 10e6)
291
+ {
292
+ return lhs == rhs;
293
+ }
294
+ #ifndef __FAST_MATH__
295
+ if (utils::isnan(lhs))
296
+ {
297
+ return utils::isnan(rhs);
298
+ }
299
+
300
+ if (utils::isinf(lhs))
301
+ {
302
+ return utils::isinf(rhs) && (lhs * rhs > 0) /* same sign */;
303
+ }
304
+ #endif
305
+
306
+ T relative_precision = precision_t::max * std::numeric_limits<T>::epsilon();
307
+ T absolute_zero_prox = precision_t::max * std::numeric_limits<T>::epsilon();
308
+
309
+ if (max(uabs(lhs), uabs(rhs)) < T(1e-3))
310
+ {
311
+ using res_type = decltype(lhs - rhs);
312
+ return detail::check_is_small(lhs - rhs, res_type(absolute_zero_prox));
313
+ }
314
+ else
315
+ {
316
+ return detail::check_is_close(lhs, rhs, relative_precision);
317
+ }
318
+ }
319
+ };
320
+
321
+ template <class T>
322
+ struct scalar_comparison
323
+ {
324
+ static bool run(const T& lhs, const T& rhs)
325
+ {
326
+ return lhs == rhs;
327
+ }
328
+ };
329
+
330
+ template <>
331
+ struct scalar_comparison<float> : scalar_comparison_near<float>
332
+ {
333
+ };
334
+
335
+ template <>
336
+ struct scalar_comparison<double> : scalar_comparison_near<double>
337
+ {
338
+ };
339
+
340
+ template <class T>
341
+ struct scalar_comparison<std::complex<T>>
342
+ {
343
+ static bool run(const std::complex<T>& lhs, const std::complex<T>& rhs)
344
+ {
345
+ using real_comparison = scalar_comparison<T>;
346
+ return real_comparison::run(lhs.real(), rhs.real()) && real_comparison::run(lhs.imag(), rhs.imag());
347
+ }
348
+ };
349
+
350
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
351
+ template <class T, bool i3ec>
352
+ struct scalar_comparison<xtl::xcomplex<T, T, i3ec>>
353
+ {
354
+ static bool run(const xtl::xcomplex<T, T, i3ec>& lhs, const xtl::xcomplex<T, T, i3ec>& rhs)
355
+ {
356
+ using real_comparison = scalar_comparison<T>;
357
+ return real_comparison::run(lhs.real(), rhs.real()) && real_comparison::run(lhs.imag(), rhs.imag());
358
+ }
359
+ };
360
+ #endif
361
+
362
+ template <class V>
363
+ struct vector_comparison
364
+ {
365
+ static bool run(const V& lhs, const V& rhs)
366
+ {
367
+ using value_type = typename V::value_type;
368
+ for (size_t i = 0; i < lhs.size(); ++i)
369
+ {
370
+ if (!scalar_comparison<value_type>::run(lhs[i], rhs[i]))
371
+ return false;
372
+ }
373
+ return true;
374
+ }
375
+ };
376
+
377
+ template <class T>
378
+ bool expect_scalar_near(const T& lhs, const T& rhs)
379
+ {
380
+ return scalar_comparison<T>::run(lhs, rhs);
381
+ }
382
+
383
+ template <class V>
384
+ bool expect_container_near(const V& lhs, const V& rhs)
385
+ {
386
+ return vector_comparison<V>::run(lhs, rhs);
387
+ }
388
+
389
+ template <class T, size_t N>
390
+ bool expect_array_near(const std::array<T, N>& lhs, const std::array<T, N>& rhs)
391
+ {
392
+ return expect_container_near(lhs, rhs);
393
+ }
394
+
395
+ template <class T, class A>
396
+ bool expect_vector_near(const std::vector<T, A>& lhs, const std::vector<T, A>& rhs)
397
+ {
398
+ return expect_container_near(lhs, rhs);
399
+ }
400
+
401
+ template <class T, size_t N, class A>
402
+ bool expect_batch_near(const ::xsimd::batch<T, A>& lhs, const std::array<T, N>& rhs)
403
+ {
404
+ alignas(A::alignment()) std::array<T, N> tmp;
405
+ lhs.store_aligned(tmp.data());
406
+ return expect_array_near(tmp, rhs);
407
+ }
408
+
409
+ template <class T, size_t N, class A>
410
+ bool expect_batch_near(const std::array<T, N>& lhs, const ::xsimd::batch<T, A>& rhs)
411
+ {
412
+ alignas(A::alignment()) std::array<T, N> tmp;
413
+ rhs.store_aligned(tmp.data());
414
+ return expect_array_near(lhs, tmp);
415
+ }
416
+
417
+ template <class T, class A>
418
+ bool expect_batch_near(const ::xsimd::batch<T, A>& lhs, const ::xsimd::batch<T, A>& rhs)
419
+ {
420
+ constexpr auto N = xsimd::batch<T, A>::size;
421
+ alignas(A::alignment()) std::array<T, N> tmp;
422
+ lhs.store_aligned(tmp.data());
423
+ return expect_batch_near(tmp, rhs);
424
+ }
425
+
426
+ template <class T, size_t N, class A>
427
+ bool expect_batch_near(const ::xsimd::batch_bool<T, A>& lhs, const std::array<bool, N>& rhs)
428
+ {
429
+ alignas(A::alignment()) std::array<bool, N> tmp;
430
+ lhs.store_aligned(tmp.data());
431
+ return expect_array_near(tmp, rhs);
432
+ }
433
+
434
+ template <class T, size_t N, class A>
435
+ bool expect_batch_near(const std::array<bool, N>& lhs, const ::xsimd::batch_bool<T, A>& rhs)
436
+ {
437
+ alignas(A::alignment()) std::array<bool, N> tmp;
438
+ rhs.store_aligned(tmp.data());
439
+ return expect_array_near(lhs, tmp);
440
+ }
441
+
442
+ template <class T, class A>
443
+ bool expect_batch_near(const ::xsimd::batch_bool<T, A>& lhs, const ::xsimd::batch_bool<T, A>& rhs)
444
+ {
445
+ constexpr auto N = xsimd::batch<T, A>::size;
446
+ alignas(A::alignment()) std::array<bool, N> tmp;
447
+ lhs.store_aligned(tmp.data());
448
+ return expect_batch_near(tmp, rhs);
449
+ }
450
+
451
+ template <class It>
452
+ size_t get_nb_diff(It lhs_begin, It lhs_end, It rhs_begin)
453
+ {
454
+ size_t res = 0;
455
+ using value_type = typename std::iterator_traits<It>::value_type;
456
+ while (lhs_begin != lhs_end)
457
+ {
458
+ if (!scalar_comparison<value_type>::run(*lhs_begin++, *rhs_begin++))
459
+ {
460
+ ++res;
461
+ }
462
+ }
463
+ return res;
464
+ }
465
+
466
+ template <class T, class A>
467
+ size_t get_nb_diff(const std::vector<T, A>& lhs, const std::vector<T, A>& rhs)
468
+ {
469
+ return get_nb_diff(lhs.begin(), lhs.end(), rhs.begin());
470
+ }
471
+
472
+ template <class T, size_t N>
473
+ size_t get_nb_diff(const std::array<T, N>& lhs, const std::array<T, N>& rhs)
474
+ {
475
+ return get_nb_diff(lhs.begin(), lhs.end(), rhs.begin());
476
+ }
477
+
478
+ template <class T, class A>
479
+ size_t get_nb_diff_near(const std::vector<T, A>& lhs, const std::vector<T, A>& rhs, float precision)
480
+ {
481
+ size_t i = 0;
482
+ for (size_t i = 0; i < lhs.size(); i++)
483
+ {
484
+ if (std::abs(lhs[i] - rhs[i]) > precision)
485
+ {
486
+ i++;
487
+ }
488
+ }
489
+ return i;
490
+ }
491
+
492
+ template <class T, size_t N>
493
+ size_t get_nb_diff_near(const std::array<T, N>& lhs, const std::array<T, N>& rhs, float precision)
494
+ {
495
+ size_t i = 0;
496
+ for (size_t i = 0; i < lhs.size(); i++)
497
+ {
498
+ if (std::abs(lhs[i] - rhs[i]) > precision)
499
+ {
500
+ i++;
501
+ }
502
+ }
503
+ return i;
504
+ }
505
+
506
+ template <class B, class S>
507
+ void load_batch(B& b, const S& src, size_t i = 0)
508
+ {
509
+ b = B::load_unaligned(src.data() + i);
510
+ }
511
+
512
+ template <class B, class D>
513
+ void store_batch(const B& b, D& dst, size_t i = 0)
514
+ {
515
+ b.store_unaligned(dst.data() + i);
516
+ }
517
+
518
+ }
519
+
520
+ #define CHECK_BATCH_EQ(b1, b2) \
521
+ do \
522
+ { \
523
+ INFO(#b1 ":", b1); \
524
+ INFO(#b2 ":", b2); \
525
+ CHECK_UNARY(::detail::expect_batch_near(b1, b2)); \
526
+ } while (0)
527
+ #define CHECK_SCALAR_EQ(s1, s2) \
528
+ do \
529
+ { \
530
+ INFO(#s1 ":", s1); \
531
+ INFO(#s2 ":", s2); \
532
+ CHECK_UNARY(::detail::expect_scalar_near(s1, s2)); \
533
+ } while (0)
534
+ #define CHECK_VECTOR_EQ(v1, v2) \
535
+ do \
536
+ { \
537
+ INFO(#v1 ":", v1); \
538
+ INFO(#v2 ":", v2); \
539
+ CHECK_UNARY(::detail::expect_vector_near(v1, v2)); \
540
+ } while (0)
541
+
542
+ namespace xsimd
543
+ {
544
+ /************************
545
+ * Enable metafunctions *
546
+ ************************/
547
+
548
+ // Backport of C++14 std::enable_if
549
+ template <bool B, class T = void>
550
+ using enable_if_t = typename std::enable_if<B, T>::type;
551
+
552
+ template <class T, class R>
553
+ using enable_integral_t = enable_if_t<std::is_integral<T>::value, R>;
554
+
555
+ template <class T, class R>
556
+ using enable_floating_point_t = enable_if_t<std::is_floating_point<T>::value, R>;
557
+
558
+ namespace mpl
559
+ {
560
+ /**************
561
+ * types_list *
562
+ **************/
563
+ template <class... T>
564
+ struct type_list
565
+ {
566
+ };
567
+ }
568
+ }
569
+
570
+ /***********************
571
+ * Testing types lists *
572
+ ***********************/
573
+
574
+ #define BATCH_INT_TYPES xsimd::batch<uint8_t>, \
575
+ xsimd::batch<int8_t>, \
576
+ xsimd::batch<uint16_t>, \
577
+ xsimd::batch<int16_t>, \
578
+ xsimd::batch<uint32_t>, \
579
+ xsimd::batch<int32_t>, \
580
+ xsimd::batch<uint64_t>, \
581
+ xsimd::batch<int64_t>
582
+
583
+ #if XSIMD_WITH_NEON64 || !XSIMD_WITH_NEON
584
+ #define BATCH_FLOAT_TYPES xsimd::batch<float>, xsimd::batch<double>
585
+ #else
586
+ #define BATCH_FLOAT_TYPES xsimd::batch<float>
587
+ #endif
588
+ #if XSIMD_WITH_NEON64 || !XSIMD_WITH_NEON
589
+ #define BATCH_COMPLEX_TYPES xsimd::batch<std::complex<float>>, xsimd::batch<std::complex<double>>
590
+ #else
591
+ #define BATCH_COMPLEX_TYPES xsimd::batch<std::complex<float>>
592
+ #endif
593
+
594
+ #define BATCH_TYPES BATCH_INT_TYPES, BATCH_FLOAT_TYPES
595
+ #define BATCH_MATH_TYPES xsimd::batch<int32_t>, BATCH_FLOAT_TYPES
596
+
597
+ #define BATCH_SWIZZLE_TYPES BATCH_FLOAT_TYPES, BATCH_COMPLEX_TYPES, BATCH_INT_TYPES
598
+
599
+ /********************
600
+ * conversion utils *
601
+ ********************/
602
+ template <size_t N, size_t A>
603
+ struct conversion_param
604
+ {
605
+ static constexpr size_t size = N;
606
+ static constexpr size_t alignment = A;
607
+ };
608
+
609
+ #define CONVERSION_TYPES conversion_param<sizeof(xsimd::types::simd_register<int, xsimd::default_arch>) / sizeof(double), xsimd::default_arch::alignment()>
610
+
611
+ #endif // XXSIMD_TEST_UTILS_HPP