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,92 @@
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
+ namespace xsimd
18
+ {
19
+ template <typename T, std::size_t N>
20
+ struct init_extract_pair_base
21
+ {
22
+ using extract_vector_type = std::array<T, N>;
23
+ extract_vector_type lhs_in, rhs_in, exped;
24
+
25
+ std::vector<extract_vector_type> create_extract_vectors(const int index)
26
+ {
27
+ std::vector<extract_vector_type> vects;
28
+ vects.reserve(3);
29
+
30
+ int num = static_cast<int>(N);
31
+ /* Generate input data: lhs, rhs */
32
+ for (int i = 0; i < num; ++i)
33
+ {
34
+ lhs_in[i] = 2 * i + 1;
35
+ rhs_in[i] = 2 * i + 2;
36
+ }
37
+ vects.push_back(std::move(lhs_in));
38
+ vects.push_back(std::move(rhs_in));
39
+
40
+ /* Expected shuffle data */
41
+ for (int i = 0; i < (num - index); ++i)
42
+ {
43
+ exped[i] = rhs_in[i + index];
44
+ if (i < index)
45
+ {
46
+ exped[num - 1 - i] = lhs_in[index - 1 - i];
47
+ }
48
+ }
49
+ vects.push_back(std::move(exped));
50
+
51
+ return vects;
52
+ }
53
+ };
54
+ }
55
+
56
+ template <class B>
57
+ struct extract_pair_test
58
+ {
59
+ using batch_type = B;
60
+ using value_type = typename B::value_type;
61
+ static constexpr size_t size = B::size;
62
+
63
+ void extract_pair_128()
64
+ {
65
+ xsimd::init_extract_pair_base<value_type, size> extract_pair_base;
66
+ auto extract_pair_vecs = extract_pair_base.create_extract_vectors(1);
67
+ auto v_lhs = extract_pair_vecs[0];
68
+ auto v_rhs = extract_pair_vecs[1];
69
+ auto v_exped = extract_pair_vecs[2];
70
+
71
+ B b_lhs = B::load_unaligned(v_lhs.data());
72
+ B b_rhs = B::load_unaligned(v_rhs.data());
73
+ B b_exped = B::load_unaligned(v_exped.data());
74
+
75
+ /* Only Test 128bit */
76
+ if ((sizeof(value_type) * size) == 16)
77
+ {
78
+ B b_res = xsimd::extract_pair(b_lhs, b_rhs, 1);
79
+ CHECK_BATCH_EQ(b_res, b_exped);
80
+ }
81
+ }
82
+ };
83
+
84
+ TEST_CASE_TEMPLATE("[extract pair]", B, BATCH_TYPES)
85
+ {
86
+ extract_pair_test<B> Test;
87
+ SUBCASE("extract_pair_128")
88
+ {
89
+ Test.extract_pair_128();
90
+ }
91
+ }
92
+ #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
+ #include "xsimd/xsimd.hpp"
13
+ #ifndef XSIMD_NO_SUPPORTED_ARCHITECTURE
14
+
15
+ #include "test_utils.hpp"
16
+
17
+ template <class B>
18
+ struct fp_manipulation_test
19
+ {
20
+ using batch_type = B;
21
+ using arch_type = typename B::arch_type;
22
+ using value_type = typename B::value_type;
23
+ static constexpr size_t size = B::size;
24
+ using array_type = std::array<value_type, size>;
25
+ using int_value_type = xsimd::as_integer_t<value_type>;
26
+ using int_batch_type = xsimd::batch<int_value_type, arch_type>;
27
+
28
+ array_type input;
29
+ int_value_type exponent;
30
+
31
+ fp_manipulation_test()
32
+ {
33
+ exponent = 5;
34
+ for (size_t i = 0; i < size; ++i)
35
+ {
36
+ input[i] = value_type(i) / 4 + value_type(1.2) * std::sqrt(value_type(i + 0.25));
37
+ }
38
+ }
39
+
40
+ void test_fp_manipulations() const
41
+ {
42
+ int_batch_type bexp(exponent);
43
+ // ldexp
44
+ {
45
+ array_type expected;
46
+ std::transform(input.cbegin(), input.cend(), expected.begin(),
47
+ [this](const value_type& v)
48
+ { return std::ldexp(v, static_cast<int>(exponent)); });
49
+ batch_type res = xsimd::ldexp(batch_input(), bexp);
50
+ INFO("ldexp");
51
+ CHECK_BATCH_EQ(res, expected);
52
+ }
53
+ // frexp
54
+ {
55
+ array_type expected;
56
+ std::transform(input.cbegin(), input.cend(), expected.begin(),
57
+ [](const value_type& v)
58
+ { int tmp; return std::frexp(v, &tmp); });
59
+ batch_type res = xsimd::frexp(batch_input(), bexp);
60
+ INFO("frexp");
61
+ CHECK_BATCH_EQ(res, expected);
62
+ }
63
+ }
64
+
65
+ private:
66
+ batch_type batch_input() const
67
+ {
68
+ return batch_type::load_unaligned(input.data());
69
+ }
70
+ };
71
+
72
+ TEST_CASE_TEMPLATE("[fp manipulation]", B, BATCH_FLOAT_TYPES)
73
+ {
74
+ fp_manipulation_test<B> Test;
75
+ Test.test_fp_manipulations();
76
+ }
77
+ #endif
@@ -0,0 +1,30 @@
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
+ /*
13
+ * Make sure the inclusion works correctly without _GNU_SOURCE
14
+ */
15
+ #ifndef _GNU_SOURCE
16
+ #define _GNU_SOURCE
17
+ #endif
18
+ #include "xsimd/xsimd.hpp"
19
+
20
+ #include "doctest/doctest.h"
21
+
22
+ TEST_CASE("[GNU_SOURCE support]")
23
+ {
24
+
25
+ SUBCASE("exp10")
26
+ {
27
+ CHECK_EQ(xsimd::exp10(0.), 1.);
28
+ CHECK_EQ(xsimd::exp10(0.f), 1.f);
29
+ }
30
+ }
@@ -0,0 +1,167 @@
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
+ template <class B>
18
+ struct hyperbolic_test
19
+ {
20
+ using batch_type = B;
21
+ using value_type = typename B::value_type;
22
+ static constexpr size_t size = B::size;
23
+ using vector_type = std::vector<value_type>;
24
+
25
+ size_t nb_input;
26
+ vector_type input;
27
+ vector_type acosh_input;
28
+ vector_type atanh_input;
29
+ vector_type expected;
30
+ vector_type res;
31
+
32
+ hyperbolic_test()
33
+ {
34
+ nb_input = size * 10000;
35
+ input.resize(nb_input);
36
+ acosh_input.resize(nb_input);
37
+ atanh_input.resize(nb_input);
38
+ for (size_t i = 0; i < nb_input; ++i)
39
+ {
40
+ input[i] = value_type(-1.5) + i * value_type(3) / nb_input;
41
+ acosh_input[i] = value_type(1.) + i * value_type(3) / nb_input;
42
+ atanh_input[i] = value_type(-0.95) + i * value_type(1.9) / nb_input;
43
+ }
44
+ expected.resize(nb_input);
45
+ res.resize(nb_input);
46
+ }
47
+
48
+ void test_hyperbolic_functions()
49
+ {
50
+ // sinh
51
+ {
52
+ std::transform(input.cbegin(), input.cend(), expected.begin(),
53
+ [](const value_type& v)
54
+ { return std::sinh(v); });
55
+ batch_type in, out;
56
+ for (size_t i = 0; i < nb_input; i += size)
57
+ {
58
+ detail::load_batch(in, input, i);
59
+ out = sinh(in);
60
+ detail::store_batch(out, res, i);
61
+ }
62
+ size_t diff = detail::get_nb_diff(res, expected);
63
+ INFO("sinh");
64
+ CHECK_EQ(diff, 0);
65
+ }
66
+ // cosh
67
+ {
68
+ std::transform(input.cbegin(), input.cend(), expected.begin(),
69
+ [](const value_type& v)
70
+ { return std::cosh(v); });
71
+ batch_type in, out;
72
+ for (size_t i = 0; i < nb_input; i += size)
73
+ {
74
+ detail::load_batch(in, input, i);
75
+ out = cosh(in);
76
+ detail::store_batch(out, res, i);
77
+ }
78
+ size_t diff = detail::get_nb_diff(res, expected);
79
+ INFO("cosh");
80
+ CHECK_EQ(diff, 0);
81
+ }
82
+ // tanh
83
+ {
84
+ std::transform(input.cbegin(), input.cend(), expected.begin(),
85
+ [](const value_type& v)
86
+ { return std::tanh(v); });
87
+ batch_type in, out;
88
+ for (size_t i = 0; i < nb_input; i += size)
89
+ {
90
+ detail::load_batch(in, input, i);
91
+ out = tanh(in);
92
+ detail::store_batch(out, res, i);
93
+ }
94
+ size_t diff = detail::get_nb_diff(res, expected);
95
+ INFO("tanh");
96
+ CHECK_EQ(diff, 0);
97
+ }
98
+ }
99
+
100
+ void test_reciprocal_functions()
101
+ {
102
+ // asinh
103
+ {
104
+ std::transform(input.cbegin(), input.cend(), expected.begin(),
105
+ [](const value_type& v)
106
+ { return std::asinh(v); });
107
+ batch_type in, out;
108
+ for (size_t i = 0; i < nb_input; i += size)
109
+ {
110
+ detail::load_batch(in, input, i);
111
+ out = asinh(in);
112
+ detail::store_batch(out, res, i);
113
+ }
114
+ size_t diff = detail::get_nb_diff(res, expected);
115
+ INFO("asinh");
116
+ CHECK_EQ(diff, 0);
117
+ }
118
+ // acosh
119
+ {
120
+ std::transform(acosh_input.cbegin(), acosh_input.cend(), expected.begin(),
121
+ [](const value_type& v)
122
+ { return std::acosh(v); });
123
+ batch_type in, out;
124
+ for (size_t i = 0; i < nb_input; i += size)
125
+ {
126
+ detail::load_batch(in, acosh_input, i);
127
+ out = acosh(in);
128
+ detail::store_batch(out, res, i);
129
+ }
130
+ size_t diff = detail::get_nb_diff(res, expected);
131
+ INFO("acosh");
132
+ CHECK_EQ(diff, 0);
133
+ }
134
+ // atanh
135
+ {
136
+ std::transform(atanh_input.cbegin(), atanh_input.cend(), expected.begin(),
137
+ [](const value_type& v)
138
+ { return std::atanh(v); });
139
+ batch_type in, out;
140
+ for (size_t i = 0; i < nb_input; i += size)
141
+ {
142
+ detail::load_batch(in, atanh_input, i);
143
+ out = atanh(in);
144
+ detail::store_batch(out, res, i);
145
+ }
146
+ size_t diff = detail::get_nb_diff(res, expected);
147
+ INFO("atanh");
148
+ CHECK_EQ(diff, 0);
149
+ }
150
+ }
151
+ };
152
+
153
+ TEST_CASE_TEMPLATE("[hyperbolic]", B, BATCH_FLOAT_TYPES)
154
+ {
155
+ hyperbolic_test<B> Test;
156
+
157
+ SUBCASE("hyperbolic")
158
+ {
159
+ Test.test_hyperbolic_functions();
160
+ }
161
+
162
+ SUBCASE("reciprocal")
163
+ {
164
+ Test.test_reciprocal_functions();
165
+ }
166
+ }
167
+ #endif
@@ -0,0 +1,304 @@
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 <random>
16
+
17
+ #include "test_utils.hpp"
18
+
19
+ template <class B>
20
+ struct load_store_test
21
+ {
22
+ using batch_type = B;
23
+ using value_type = typename B::value_type;
24
+ using index_type = typename xsimd::as_integer_t<batch_type>;
25
+ template <class T>
26
+ using allocator = xsimd::default_allocator<T, typename B::arch_type>;
27
+ static constexpr size_t size = B::size;
28
+ using array_type = std::array<value_type, size>;
29
+ using int8_vector_type = std::vector<int8_t, allocator<int8_t>>;
30
+ using uint8_vector_type = std::vector<uint8_t, allocator<uint8_t>>;
31
+ using int16_vector_type = std::vector<int16_t, allocator<int16_t>>;
32
+ using uint16_vector_type = std::vector<uint16_t, allocator<uint16_t>>;
33
+ using int32_vector_type = std::vector<int32_t, allocator<int32_t>>;
34
+ using uint32_vector_type = std::vector<uint32_t, allocator<uint32_t>>;
35
+ using int64_vector_type = std::vector<int64_t, allocator<int64_t>>;
36
+ using uint64_vector_type = std::vector<uint64_t, allocator<uint64_t>>;
37
+ #ifdef XSIMD_32_BIT_ABI
38
+ using long_vector_type = std::vector<long, allocator<long>>;
39
+ using ulong_vector_type = std::vector<unsigned long, allocator<unsigned long>>;
40
+ #endif
41
+ using float_vector_type = std::vector<float, allocator<float>>;
42
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
43
+ using double_vector_type = std::vector<double, allocator<double>>;
44
+ #endif
45
+
46
+ int8_vector_type i8_vec;
47
+ uint8_vector_type ui8_vec;
48
+ int16_vector_type i16_vec;
49
+ uint16_vector_type ui16_vec;
50
+ int32_vector_type i32_vec;
51
+ uint32_vector_type ui32_vec;
52
+ int64_vector_type i64_vec;
53
+ uint64_vector_type ui64_vec;
54
+ #ifdef XSIMD_32_BIT_ABI
55
+ long_vector_type l_vec;
56
+ ulong_vector_type ul_vec;
57
+ #endif
58
+ float_vector_type f_vec;
59
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
60
+ double_vector_type d_vec;
61
+ #endif
62
+
63
+ array_type expected;
64
+
65
+ load_store_test()
66
+ {
67
+ init_test_vector(i8_vec);
68
+ init_test_vector(ui8_vec);
69
+ init_test_vector(i16_vec);
70
+ init_test_vector(ui16_vec);
71
+ init_test_vector(i32_vec);
72
+ init_test_vector(ui32_vec);
73
+ init_test_vector(i64_vec);
74
+ init_test_vector(ui64_vec);
75
+ #ifdef XSIMD_32_BIT_ABI
76
+ init_test_vector(l_vec);
77
+ init_test_vector(ul_vec);
78
+ #endif
79
+ init_test_vector(f_vec);
80
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
81
+ init_test_vector(d_vec);
82
+ #endif
83
+ }
84
+
85
+ void test_load()
86
+ {
87
+ test_load_impl(i8_vec, "load int8_t");
88
+ test_load_impl(ui8_vec, "load uint8_t");
89
+ test_load_impl(i16_vec, "load int16_t");
90
+ test_load_impl(ui16_vec, "load uint16_t");
91
+ test_load_impl(i32_vec, "load int32_t");
92
+ test_load_impl(ui32_vec, "load uint32_t");
93
+ test_load_impl(i64_vec, "load int64_t");
94
+ test_load_impl(ui64_vec, "load uint64_t");
95
+ #ifdef XSIMD_32_BIT_ABI
96
+ test_load_impl(l_vec, "load long");
97
+ test_load_impl(ul_vec, "load unsigned long");
98
+ #endif
99
+ test_load_impl(f_vec, "load float");
100
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
101
+ test_load_impl(d_vec, "load double");
102
+ #endif
103
+ }
104
+
105
+ void test_store()
106
+ {
107
+ test_store_impl(i8_vec, "load int8_t");
108
+ test_store_impl(ui8_vec, "load uint8_t");
109
+ test_store_impl(i16_vec, "load int16_t");
110
+ test_store_impl(ui16_vec, "load uint16_t");
111
+ test_store_impl(i32_vec, "load int32_t");
112
+ test_store_impl(ui32_vec, "load uint32_t");
113
+ test_store_impl(i64_vec, "load int64_t");
114
+ test_store_impl(ui64_vec, "load uint64_t");
115
+ #ifdef XSIMD_32_BIT_ABI
116
+ test_store_impl(l_vec, "load long");
117
+ test_store_impl(ul_vec, "load unsigned long");
118
+ #endif
119
+ test_store_impl(f_vec, "load float");
120
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
121
+ test_store_impl(d_vec, "load double");
122
+ #endif
123
+ }
124
+ void test_gather()
125
+ {
126
+ test_gather_impl(i8_vec, "gather int8_t");
127
+ test_gather_impl(ui8_vec, "gather uint8_t");
128
+ test_gather_impl(i16_vec, "gather int16_t");
129
+ test_gather_impl(ui16_vec, "gather uint16_t");
130
+ test_gather_impl(i32_vec, "gather int32_t");
131
+ test_gather_impl(ui32_vec, "gather uint32_t");
132
+ test_gather_impl(i64_vec, "gather int64_t");
133
+ test_gather_impl(ui64_vec, "gather uint64_t");
134
+ #ifdef XSIMD_32_BIT_ABI
135
+ test_gather_impl(l_vec, "gather long");
136
+ test_gather_impl(ul_vec, "gather unsigned long");
137
+ #endif
138
+ test_gather_impl(f_vec, "gather float");
139
+ test_gather_impl(f_vec, "gather float");
140
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
141
+ test_gather_impl(d_vec, "gather double");
142
+ #endif
143
+ }
144
+
145
+ void test_scatter()
146
+ {
147
+ test_scatter_impl(i8_vec, "scatter int8_t");
148
+ test_scatter_impl(ui8_vec, "scatter uint8_t");
149
+ test_scatter_impl(i16_vec, "scatter int16_t");
150
+ test_scatter_impl(ui16_vec, "scatter uint16_t");
151
+ test_scatter_impl(i32_vec, "scatter int32_t");
152
+ test_scatter_impl(ui32_vec, "scatter uint32_t");
153
+ test_scatter_impl(i64_vec, "scatter int64_t");
154
+ test_scatter_impl(ui64_vec, "scatter uint64_t");
155
+ #ifdef XSIMD_32_BIT_ABI
156
+ test_scatter_impl(l_vec, "scatter long");
157
+ test_scatter_impl(ul_vec, "scatter unsigned long");
158
+ #endif
159
+ test_scatter_impl(f_vec, "scatter float");
160
+ #if !XSIMD_WITH_NEON || XSIMD_WITH_NEON64
161
+ test_scatter_impl(d_vec, "scatter double");
162
+ #endif
163
+ }
164
+
165
+ private:
166
+ #ifdef XSIMD_WITH_SSE2
167
+ struct test_load_as_return_type
168
+ {
169
+ using lower_arch = xsimd::sse2;
170
+ using expected_batch_type = xsimd::batch<float, lower_arch>;
171
+ using load_as_return_type = decltype(xsimd::load_as<float, lower_arch>(std::declval<float*>(), xsimd::aligned_mode()));
172
+ static_assert(std::is_same<load_as_return_type, expected_batch_type>::value, "honoring arch parameter");
173
+ };
174
+ #endif
175
+
176
+ template <class V>
177
+ void test_load_impl(const V& v, const std::string& name)
178
+ {
179
+ std::copy(v.cbegin(), v.cend(), expected.begin());
180
+
181
+ batch_type b = batch_type::load_unaligned(v.data());
182
+ INFO(name, " unaligned");
183
+ CHECK_BATCH_EQ(b, expected);
184
+
185
+ b = batch_type::load_aligned(v.data());
186
+ INFO(name, " aligned");
187
+ CHECK_BATCH_EQ(b, expected);
188
+
189
+ b = xsimd::load_as<value_type>(v.data(), xsimd::unaligned_mode());
190
+ INFO(name, " unaligned (load_as)");
191
+ CHECK_BATCH_EQ(b, expected);
192
+
193
+ b = xsimd::load_as<value_type>(v.data(), xsimd::aligned_mode());
194
+ INFO(name, " aligned (load_as)");
195
+ CHECK_BATCH_EQ(b, expected);
196
+ }
197
+
198
+ struct test_load_char
199
+ {
200
+ /* Make sure xsimd doesn't try to be smart with char types */
201
+ static_assert(std::is_same<xsimd::batch<char>, decltype(xsimd::load_as<char>(std::declval<char*>(), xsimd::aligned_mode()))>::value,
202
+ "honor explicit type request");
203
+ static_assert(std::is_same<xsimd::batch<unsigned char>, decltype(xsimd::load_as<unsigned char>(std::declval<unsigned char*>(), xsimd::aligned_mode()))>::value,
204
+ "honor explicit type request");
205
+ static_assert(std::is_same<xsimd::batch<signed char>, decltype(xsimd::load_as<signed char>(std::declval<signed char*>(), xsimd::aligned_mode()))>::value,
206
+ "honor explicit type request");
207
+ };
208
+
209
+ template <class V>
210
+ void test_store_impl(const V& v, const std::string& name)
211
+ {
212
+ batch_type b = batch_type::load_aligned(v.data());
213
+ V res(size);
214
+
215
+ b.store_unaligned(res.data());
216
+ INFO(name, " unaligned");
217
+ CHECK_VECTOR_EQ(res, v);
218
+
219
+ b.store_aligned(res.data());
220
+ INFO(name, " aligned");
221
+ CHECK_VECTOR_EQ(res, v);
222
+
223
+ xsimd::store_as(res.data(), b, xsimd::unaligned_mode());
224
+ INFO(name, " unaligned (store_as)");
225
+ CHECK_VECTOR_EQ(res, v);
226
+
227
+ xsimd::store_as(res.data(), b, xsimd::aligned_mode());
228
+ INFO(name, " aligned (store_as)");
229
+ CHECK_VECTOR_EQ(res, v);
230
+ }
231
+
232
+ template <class V>
233
+ void test_gather_impl(const V& v, const std::string& name)
234
+ {
235
+ std::copy(v.cbegin(), v.cend(), expected.begin());
236
+ index_type index = xsimd::detail::make_sequence_as_batch<index_type>();
237
+ batch_type b = batch_type::gather(v.data(), index);
238
+ INFO(name, " (in order)");
239
+ CHECK_BATCH_EQ(b, expected);
240
+
241
+ std::reverse_copy(v.cbegin(), v.cend(), expected.begin());
242
+ std::array<typename index_type::value_type, index_type::size> index_reverse;
243
+ index.store_unaligned(index_reverse.data());
244
+ std::reverse(index_reverse.begin(), index_reverse.end());
245
+ index = index_type::load_unaligned(index_reverse.data());
246
+ b = batch_type::gather(v.data(), index);
247
+ INFO(name, " (in reverse order)");
248
+ CHECK_BATCH_EQ(b, expected);
249
+ }
250
+
251
+ template <class V>
252
+ void test_scatter_impl(const V& v, const std::string& name)
253
+ {
254
+ batch_type b = batch_type::load_aligned(v.data());
255
+ index_type index = xsimd::detail::make_sequence_as_batch<index_type>();
256
+ V res(size);
257
+
258
+ b.scatter(res.data(), index);
259
+ INFO(name, " (in order)");
260
+ CHECK_VECTOR_EQ(res, v);
261
+
262
+ V reverse_v(size);
263
+ std::reverse_copy(v.cbegin(), v.cend(), reverse_v.begin());
264
+ std::array<typename index_type::value_type, index_type::size> reverse_index;
265
+ index.store_unaligned(reverse_index.data());
266
+ std::reverse(reverse_index.begin(), reverse_index.end());
267
+ index = index_type::load_unaligned(reverse_index.data());
268
+ b.scatter(res.data(), index);
269
+ INFO(name, " (in reverse order)");
270
+ CHECK_VECTOR_EQ(res, reverse_v);
271
+ }
272
+
273
+ template <class V>
274
+ void init_test_vector(V& vec)
275
+ {
276
+ vec.resize(size);
277
+
278
+ int min = 0;
279
+ int max = 100;
280
+
281
+ std::default_random_engine generator;
282
+ std::uniform_int_distribution<int> distribution(min, max);
283
+
284
+ auto gen = [&distribution, &generator]()
285
+ {
286
+ return static_cast<value_type>(distribution(generator));
287
+ };
288
+
289
+ std::generate(vec.begin(), vec.end(), gen);
290
+ }
291
+ };
292
+
293
+ TEST_CASE_TEMPLATE("[load store]", B, BATCH_TYPES)
294
+ {
295
+ load_store_test<B> Test;
296
+ SUBCASE("load") { Test.test_load(); }
297
+
298
+ SUBCASE("store") { Test.test_store(); }
299
+
300
+ SUBCASE("gather") { Test.test_gather(); }
301
+
302
+ SUBCASE("scatter") { Test.test_scatter(); }
303
+ }
304
+ #endif