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,712 @@
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 <cmath>
16
+ #include <functional>
17
+ #include <numeric>
18
+
19
+ #include "test_utils.hpp"
20
+
21
+ using namespace std::placeholders;
22
+
23
+ template <class B>
24
+ struct batch_complex_test
25
+ {
26
+ using batch_type = xsimd::simd_type<typename B::value_type>;
27
+ using arch_type = typename B::arch_type;
28
+ using real_batch_type = typename B::real_batch;
29
+ using value_type = typename B::value_type;
30
+ using real_value_type = typename value_type::value_type;
31
+ static constexpr size_t size = B::size;
32
+ using array_type = std::array<value_type, size>;
33
+ using bool_array_type = std::array<bool, size>;
34
+ using real_array_type = std::array<real_value_type, size>;
35
+
36
+ array_type lhs;
37
+ array_type rhs;
38
+ value_type scalar;
39
+ real_value_type real_scalar;
40
+
41
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
42
+ using xtl_value_type = xtl::xcomplex<real_value_type, real_value_type, true>;
43
+ using xtl_array_type = std::array<xtl_value_type, size>;
44
+ #endif
45
+
46
+ batch_complex_test()
47
+ {
48
+ scalar = value_type(real_value_type(1.4), real_value_type(2.3));
49
+ real_scalar = scalar.real();
50
+ for (size_t i = 0; i < size; ++i)
51
+ {
52
+ lhs[i] = value_type(real_value_type(i) / real_value_type(4) + real_value_type(1.2) * std::sqrt(real_value_type(i + 0.25)),
53
+ real_value_type(i) / real_value_type(5));
54
+ rhs[i] = value_type(real_value_type(10.2) / real_value_type(i + 2) + real_value_type(0.25), real_value_type(i) / real_value_type(3.2));
55
+ }
56
+ }
57
+
58
+ void test_load_store() const
59
+ {
60
+ {
61
+ array_type res;
62
+ batch_type b = batch_type::load_unaligned(lhs.data());
63
+ b.store_unaligned(res.data());
64
+ CHECK_EQ(res, lhs);
65
+
66
+ alignas(arch_type::alignment()) array_type arhs(this->rhs);
67
+ alignas(arch_type::alignment()) array_type ares;
68
+ b = batch_type::load_aligned(arhs.data());
69
+ b.store_aligned(ares.data());
70
+ CHECK_EQ(ares, rhs);
71
+ }
72
+
73
+ {
74
+ real_array_type real, imag, res_real, res_imag;
75
+ for (size_t i = 0; i < size; ++i)
76
+ {
77
+ real[i] = lhs[i].real();
78
+ imag[i] = lhs[i].imag();
79
+ }
80
+ batch_type b = batch_type::load_unaligned(real.data(), imag.data());
81
+ b.store_unaligned(res_real.data(), res_imag.data());
82
+ CHECK_EQ(res_real, real);
83
+
84
+ alignas(arch_type::alignment()) real_array_type areal, aimag, ares_real, ares_imag;
85
+ for (size_t i = 0; i < size; ++i)
86
+ {
87
+ areal[i] = lhs[i].real();
88
+ aimag[i] = lhs[i].imag();
89
+ }
90
+ b = batch_type::load_aligned(areal.data(), aimag.data());
91
+ b.store_aligned(ares_real.data(), ares_imag.data());
92
+ CHECK_EQ(ares_real, areal);
93
+ }
94
+ {
95
+ real_array_type real, imag, res_real, res_imag;
96
+ for (size_t i = 0; i < size; ++i)
97
+ {
98
+ real[i] = lhs[i].real();
99
+ imag[i] = 0;
100
+ }
101
+ batch_type b = batch_type::load_unaligned(real.data());
102
+ b.store_unaligned(res_real.data(), res_imag.data());
103
+ CHECK_EQ(res_real, real);
104
+ CHECK_EQ(res_imag, imag);
105
+
106
+ alignas(arch_type::alignment()) real_array_type areal, aimag, ares_real, ares_imag;
107
+ for (size_t i = 0; i < size; ++i)
108
+ {
109
+ areal[i] = lhs[i].real();
110
+ aimag[i] = 0;
111
+ }
112
+ b = batch_type::load_aligned(areal.data());
113
+ b.store_aligned(ares_real.data(), ares_imag.data());
114
+ CHECK_EQ(ares_real, areal);
115
+ CHECK_EQ(ares_imag, aimag);
116
+ }
117
+ }
118
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
119
+ void test_load_store_xtl() const
120
+ {
121
+ xtl_array_type tmp;
122
+ std::fill(tmp.begin(), tmp.end(), xtl_value_type(2, 3));
123
+
124
+ alignas(arch_type::alignment()) xtl_array_type aligned_tmp;
125
+ std::fill(aligned_tmp.begin(), aligned_tmp.end(), xtl_value_type(2, 3));
126
+
127
+ batch_type b0(xtl_value_type(2, 3));
128
+ CHECK_EQ(b0, tmp);
129
+
130
+ batch_type b1 = xsimd::load_as<xtl_value_type>(aligned_tmp.data(), xsimd::aligned_mode());
131
+ CHECK_EQ(b1, tmp);
132
+
133
+ batch_type b2 = xsimd::load_as<xtl_value_type>(tmp.data(), xsimd::unaligned_mode());
134
+ CHECK_EQ(b2, tmp);
135
+
136
+ xsimd::store_as(aligned_tmp.data(), b1, xsimd::aligned_mode());
137
+ CHECK_EQ(b1, aligned_tmp);
138
+
139
+ xsimd::store_as(tmp.data(), b2, xsimd::unaligned_mode());
140
+ CHECK_EQ(b2, tmp);
141
+ }
142
+ #endif
143
+
144
+ void test_constructors() const
145
+ {
146
+ array_type tmp;
147
+ std::fill(tmp.begin(), tmp.end(), value_type(2, 3));
148
+ batch_type b0a(value_type(2, 3));
149
+ CHECK_EQ(b0a, tmp);
150
+
151
+ batch_type b0b = batch_type::broadcast(value_type(2, 3));
152
+ CHECK_EQ(b0b, tmp);
153
+
154
+ batch_type b0c = xsimd::broadcast(value_type(2, 3));
155
+ CHECK_EQ(b0c, tmp);
156
+
157
+ std::fill(tmp.begin(), tmp.end(), value_type(real_scalar));
158
+ batch_type b1(real_scalar);
159
+ CHECK_EQ(b1, tmp);
160
+
161
+ real_array_type real, imag;
162
+ for (size_t i = 0; i < size; ++i)
163
+ {
164
+ real[i] = lhs[i].real();
165
+ imag[i] = lhs[i].imag();
166
+ tmp[i] = value_type(real[i]);
167
+ }
168
+ }
169
+
170
+ void test_access_operator() const
171
+ {
172
+ batch_type res = batch_lhs();
173
+ for (size_t i = 0; i < size; ++i)
174
+ {
175
+ CHECK_EQ(res.get(i), lhs[i]);
176
+ }
177
+ }
178
+
179
+ void test_first_element() const
180
+ {
181
+ batch_type res = batch_lhs();
182
+ CHECK_EQ(res.first(), lhs[0]);
183
+ }
184
+
185
+ void test_arithmetic() const
186
+ {
187
+ // +batch
188
+ {
189
+ array_type expected = lhs;
190
+ batch_type res = +batch_lhs();
191
+ CHECK_BATCH_EQ(res, expected);
192
+ }
193
+ // -batch
194
+ {
195
+ array_type expected;
196
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::negate<value_type>());
197
+ batch_type res = -batch_lhs();
198
+ CHECK_BATCH_EQ(res, expected);
199
+ }
200
+ // batch + batch
201
+ {
202
+ array_type expected;
203
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::plus<value_type>());
204
+ batch_type res = batch_lhs() + batch_rhs();
205
+ CHECK_BATCH_EQ(res, expected);
206
+ }
207
+ // batch + scalar
208
+ {
209
+ array_type expected;
210
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::plus<value_type>(), _1, scalar));
211
+ batch_type lres = batch_lhs() + scalar;
212
+ CHECK_BATCH_EQ(lres, expected);
213
+ batch_type rres = scalar + batch_lhs();
214
+ CHECK_BATCH_EQ(rres, expected);
215
+ }
216
+
217
+ // batch + real_batch
218
+ {
219
+ array_type expected;
220
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
221
+ [](const value_type& l, const value_type& r)
222
+ { return l + r.real(); });
223
+ batch_type lres = batch_lhs() + batch_rhs().real();
224
+ CHECK_BATCH_EQ(lres, expected);
225
+ batch_type rres = batch_rhs().real() + batch_lhs();
226
+ CHECK_BATCH_EQ(rres, expected);
227
+ }
228
+ // batch + real_scalar
229
+ {
230
+ array_type expected;
231
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::plus<value_type>(), _1, real_scalar));
232
+ batch_type lres = batch_lhs() + real_scalar;
233
+ CHECK_BATCH_EQ(lres, expected);
234
+ batch_type rres = real_scalar + batch_lhs();
235
+ CHECK_BATCH_EQ(rres, expected);
236
+ }
237
+ // batch - batch
238
+ {
239
+ array_type expected;
240
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::minus<value_type>());
241
+ batch_type res = batch_lhs() - batch_rhs();
242
+ CHECK_BATCH_EQ(res, expected);
243
+ }
244
+ // batch - scalar
245
+ {
246
+ array_type expected;
247
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::minus<value_type>(), _1, scalar));
248
+ batch_type lres = batch_lhs() - scalar;
249
+ CHECK_BATCH_EQ(lres, expected);
250
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::minus<value_type>(), scalar, _1));
251
+ batch_type rres = scalar - batch_lhs();
252
+ CHECK_BATCH_EQ(rres, expected);
253
+ }
254
+ // batch - real_batch
255
+ {
256
+ array_type expected;
257
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
258
+ [](const value_type& l, const value_type& r)
259
+ { return l - r.real(); });
260
+ batch_type lres = batch_lhs() - batch_rhs().real();
261
+ CHECK_BATCH_EQ(lres, expected);
262
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
263
+ [](const value_type& l, const value_type& r)
264
+ { return r.real() - l; });
265
+ batch_type rres = batch_rhs().real() - batch_lhs();
266
+ CHECK_BATCH_EQ(rres, expected);
267
+ }
268
+ // batch - real_scalar
269
+ {
270
+ array_type expected;
271
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::minus<value_type>(), _1, real_scalar));
272
+ batch_type lres = batch_lhs() - real_scalar;
273
+ CHECK_BATCH_EQ(lres, expected);
274
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::minus<value_type>(), real_scalar, _1));
275
+ batch_type rres = real_scalar - batch_lhs();
276
+ CHECK_BATCH_EQ(rres, expected);
277
+ }
278
+ // batch * batch
279
+ {
280
+ array_type expected;
281
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::multiplies<value_type>());
282
+ batch_type res = batch_lhs() * batch_rhs();
283
+ CHECK_BATCH_EQ(res, expected);
284
+ }
285
+ // batch * scalar
286
+ {
287
+ array_type expected;
288
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::multiplies<value_type>(), _1, scalar));
289
+ batch_type lres = batch_lhs() * scalar;
290
+ CHECK_BATCH_EQ(lres, expected);
291
+ batch_type rres = scalar * batch_lhs();
292
+ CHECK_BATCH_EQ(rres, expected);
293
+ }
294
+ // batch * real_batch
295
+ {
296
+ array_type expected;
297
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
298
+ [](const value_type& l, const value_type& r)
299
+ { return l * r.real(); });
300
+ batch_type lres = batch_lhs() * batch_rhs().real();
301
+ CHECK_BATCH_EQ(lres, expected);
302
+ batch_type rres = batch_rhs().real() * batch_lhs();
303
+ CHECK_BATCH_EQ(rres, expected);
304
+ }
305
+ // batch * real_scalar
306
+ {
307
+ array_type expected;
308
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::multiplies<value_type>(), _1, real_scalar));
309
+ batch_type lres = batch_lhs() * real_scalar;
310
+ CHECK_BATCH_EQ(lres, expected);
311
+ batch_type rres = real_scalar * batch_lhs();
312
+ CHECK_BATCH_EQ(rres, expected);
313
+ }
314
+ // batch / batch
315
+ {
316
+ array_type expected;
317
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::divides<value_type>());
318
+ batch_type res = batch_lhs() / batch_rhs();
319
+ CHECK_BATCH_EQ(res, expected);
320
+ }
321
+ // batch / scalar
322
+ {
323
+ array_type expected;
324
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::divides<value_type>(), _1, scalar));
325
+ batch_type lres = batch_lhs() / scalar;
326
+ CHECK_BATCH_EQ(lres, expected);
327
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::divides<value_type>(), scalar, _1));
328
+ batch_type rres = scalar / batch_lhs();
329
+ CHECK_BATCH_EQ(rres, expected);
330
+ }
331
+ // batch / real_batch
332
+ {
333
+ array_type expected;
334
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
335
+ [](const value_type& l, const value_type& r)
336
+ { return l / r.real(); });
337
+ batch_type lres = batch_lhs() / batch_rhs().real();
338
+ CHECK_BATCH_EQ(lres, expected);
339
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
340
+ [](const value_type& l, const value_type& r)
341
+ { return r.real() / l; });
342
+ batch_type rres = batch_rhs().real() / batch_lhs();
343
+ CHECK_BATCH_EQ(rres, expected);
344
+ }
345
+ // batch - real_scalar
346
+ {
347
+ array_type expected;
348
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::divides<value_type>(), _1, real_scalar));
349
+ batch_type lres = batch_lhs() / real_scalar;
350
+ CHECK_BATCH_EQ(lres, expected);
351
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::divides<value_type>(), real_scalar, _1));
352
+ batch_type rres = real_scalar / batch_lhs();
353
+ CHECK_BATCH_EQ(rres, expected);
354
+ }
355
+ }
356
+
357
+ void test_computed_assignment() const
358
+ {
359
+
360
+ // batch += batch
361
+ {
362
+ array_type expected;
363
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::plus<value_type>());
364
+ batch_type res = batch_lhs();
365
+ res += batch_rhs();
366
+ CHECK_BATCH_EQ(res, expected);
367
+ }
368
+ // batch += scalar
369
+ {
370
+ array_type expected;
371
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::plus<value_type>(), _1, scalar));
372
+ batch_type res = batch_lhs();
373
+ res += scalar;
374
+ CHECK_BATCH_EQ(res, expected);
375
+ }
376
+ // batch += real_batch
377
+ {
378
+ array_type expected;
379
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
380
+ [](const value_type& l, const value_type& r)
381
+ { return l + r.real(); });
382
+ batch_type res = batch_lhs();
383
+ res += batch_rhs().real();
384
+ CHECK_BATCH_EQ(res, expected);
385
+ }
386
+ // batch += real_scalar
387
+ {
388
+ array_type expected;
389
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::plus<value_type>(), _1, real_scalar));
390
+ batch_type res = batch_lhs();
391
+ res += real_scalar;
392
+ CHECK_BATCH_EQ(res, expected);
393
+ }
394
+ // batch -= batch
395
+ {
396
+ array_type expected;
397
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::minus<value_type>());
398
+ batch_type res = batch_lhs();
399
+ res -= batch_rhs();
400
+ CHECK_BATCH_EQ(res, expected);
401
+ }
402
+ // batch -= scalar
403
+ {
404
+ array_type expected;
405
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::minus<value_type>(), _1, scalar));
406
+ batch_type res = batch_lhs();
407
+ res -= scalar;
408
+ CHECK_BATCH_EQ(res, expected);
409
+ }
410
+ // batch -= real_batch
411
+ {
412
+ array_type expected;
413
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
414
+ [](const value_type& l, const value_type& r)
415
+ { return l - r.real(); });
416
+ batch_type res = batch_lhs();
417
+ res -= batch_rhs().real();
418
+ CHECK_BATCH_EQ(res, expected);
419
+ }
420
+ // batch -= real_scalar
421
+ {
422
+ array_type expected;
423
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::minus<value_type>(), _1, real_scalar));
424
+ batch_type res = batch_lhs();
425
+ res -= real_scalar;
426
+ CHECK_BATCH_EQ(res, expected);
427
+ }
428
+ // batch *= batch
429
+ {
430
+ array_type expected;
431
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::multiplies<value_type>());
432
+ batch_type res = batch_lhs();
433
+ res *= batch_rhs();
434
+ CHECK_BATCH_EQ(res, expected);
435
+ }
436
+ // batch *= scalar
437
+ {
438
+ array_type expected;
439
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::multiplies<value_type>(), _1, scalar));
440
+ batch_type res = batch_lhs();
441
+ res *= scalar;
442
+ CHECK_BATCH_EQ(res, expected);
443
+ }
444
+ // batch *= real_batch
445
+ {
446
+ array_type expected;
447
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
448
+ [](const value_type& l, const value_type& r)
449
+ { return l * r.real(); });
450
+ batch_type res = batch_lhs();
451
+ res *= batch_rhs().real();
452
+ CHECK_BATCH_EQ(res, expected);
453
+ }
454
+ // batch *= real_scalar
455
+ {
456
+ array_type expected;
457
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::multiplies<value_type>(), _1, real_scalar));
458
+ batch_type res = batch_lhs();
459
+ res *= real_scalar;
460
+ CHECK_BATCH_EQ(res, expected);
461
+ }
462
+ // batch /= batch
463
+ {
464
+ array_type expected;
465
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(), std::divides<value_type>());
466
+ batch_type res = batch_lhs();
467
+ res /= batch_rhs();
468
+ CHECK_BATCH_EQ(res, expected);
469
+ }
470
+ // batch /= scalar
471
+ {
472
+ array_type expected;
473
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::divides<value_type>(), _1, scalar));
474
+ batch_type res = batch_lhs();
475
+ res /= scalar;
476
+ CHECK_BATCH_EQ(res, expected);
477
+ }
478
+ // batch /= real_batch
479
+ {
480
+ array_type expected;
481
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
482
+ [](const value_type& l, const value_type& r)
483
+ { return l / r.real(); });
484
+ batch_type res = batch_lhs();
485
+ res /= batch_rhs().real();
486
+ CHECK_BATCH_EQ(res, expected);
487
+ }
488
+ // batch /= real_scalar
489
+ {
490
+ array_type expected;
491
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(), std::bind(std::divides<value_type>(), _1, real_scalar));
492
+ batch_type res = batch_lhs();
493
+ res /= real_scalar;
494
+ CHECK_BATCH_EQ(res, expected);
495
+ }
496
+ }
497
+
498
+ void test_conj_norm_proj() const
499
+ {
500
+ // conj
501
+ {
502
+ array_type expected;
503
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
504
+ [](const value_type& v)
505
+ { using std::conj; return conj(v); });
506
+ batch_type res = conj(batch_lhs());
507
+ CHECK_BATCH_EQ(res, expected);
508
+ }
509
+ // norm
510
+ {
511
+ real_array_type expected;
512
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
513
+ [](const value_type& v)
514
+ { using std::norm; return norm(v); });
515
+ real_batch_type res = norm(batch_lhs());
516
+ CHECK_BATCH_EQ(res, expected);
517
+ }
518
+ // proj
519
+ {
520
+ array_type expected;
521
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
522
+ [](const value_type& v)
523
+ { using std::proj; return proj(v); });
524
+ batch_type res = proj(batch_lhs());
525
+ CHECK_BATCH_EQ(res, expected);
526
+ }
527
+ }
528
+
529
+ void test_conj_norm_proj_real() const
530
+ {
531
+ // conj real batch
532
+ {
533
+ array_type expected;
534
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
535
+ [](const value_type& v)
536
+ { return std::conj(std::real(v)); });
537
+ batch_type res = conj(real(batch_lhs()));
538
+ CHECK_BATCH_EQ(res, expected);
539
+ }
540
+ // norm real batch
541
+ {
542
+ real_array_type expected;
543
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
544
+ [](const value_type& v)
545
+ { return std::norm(std::real(v)); });
546
+ real_batch_type res = norm(real(batch_lhs()));
547
+ CHECK_BATCH_EQ(res, expected);
548
+ }
549
+ // proj real batch
550
+ {
551
+ array_type expected;
552
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
553
+ [](const value_type& v)
554
+ { return std::proj(std::real(v)); });
555
+ batch_type res = proj(real(batch_lhs()));
556
+ CHECK_BATCH_EQ(res, expected);
557
+ }
558
+ }
559
+
560
+ void test_polar() const
561
+ {
562
+ // polar w/ magnitude/phase
563
+ {
564
+ array_type expected;
565
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.begin(), expected.begin(),
566
+ [](const value_type& v_lhs, const value_type& v_rhs)
567
+ { return std::polar(std::real(v_lhs), std::real(v_rhs)); });
568
+ batch_type res = polar(real(batch_lhs()), real(batch_rhs()));
569
+ CHECK_BATCH_EQ(res, expected);
570
+ }
571
+ }
572
+
573
+ void test_horizontal_operations() const
574
+ {
575
+ // reduce_add
576
+ {
577
+ value_type expected = std::accumulate(lhs.cbegin(), lhs.cend(), value_type(0));
578
+ value_type res = reduce_add(batch_lhs());
579
+ CHECK_SCALAR_EQ(res, expected);
580
+ }
581
+ // reduce_mul
582
+ {
583
+ value_type expected = std::accumulate(lhs.cbegin(), lhs.cend(), value_type(1), std::multiplies<value_type>());
584
+ value_type res = reduce_mul(batch_lhs());
585
+ CHECK_SCALAR_EQ(res, expected);
586
+ }
587
+ }
588
+
589
+ void test_fused_operations() const
590
+ {
591
+ // fma
592
+ {
593
+ array_type expected;
594
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.begin(), expected.begin(),
595
+ [](const value_type& l, const value_type& r)
596
+ { return l * r + r; });
597
+ batch_type res = xsimd::fma(batch_lhs(), batch_rhs(), batch_rhs());
598
+ CHECK_BATCH_EQ(res, expected);
599
+ }
600
+ // fms
601
+ {
602
+ array_type expected;
603
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.begin(), expected.begin(),
604
+ [](const value_type& l, const value_type& r)
605
+ { return l * r - r; });
606
+ batch_type res = fms(batch_lhs(), batch_rhs(), batch_rhs());
607
+ CHECK_BATCH_EQ(res, expected);
608
+ }
609
+
610
+ // fnma
611
+ {
612
+ array_type expected;
613
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.begin(), expected.begin(),
614
+ [](const value_type& l, const value_type& r)
615
+ { return -l * r + r; });
616
+ batch_type res = fnma(batch_lhs(), batch_rhs(), batch_rhs());
617
+ CHECK_BATCH_EQ(res, expected);
618
+ }
619
+ // fnms
620
+ {
621
+ array_type expected;
622
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.begin(), expected.begin(),
623
+ [](const value_type& l, const value_type& r)
624
+ { return -l * r - r; });
625
+ batch_type res = fnms(batch_lhs(), batch_rhs(), batch_rhs());
626
+ CHECK_BATCH_EQ(res, expected);
627
+ }
628
+ }
629
+
630
+ void test_boolean_conversion() const
631
+ {
632
+ // !batch
633
+ {
634
+ array_type expected;
635
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
636
+ [](const value_type& l)
637
+ { return l == value_type(0); });
638
+ batch_type res = (batch_type)!batch_lhs();
639
+ CHECK_BATCH_EQ(res, expected);
640
+ }
641
+ }
642
+
643
+ #ifndef __FAST_MATH__
644
+ void test_isnan() const
645
+ {
646
+ {
647
+ bool_array_type expected;
648
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
649
+ [](const value_type& l)
650
+ { return std::isnan(l.real()) || std::isnan(l.imag()); });
651
+ typename batch_type::batch_bool_type res = isnan(batch_lhs());
652
+ CHECK_BATCH_EQ(res, expected);
653
+ }
654
+ }
655
+ #endif
656
+
657
+ private:
658
+ batch_type batch_lhs() const
659
+ {
660
+ batch_type res = batch_type::load_unaligned(lhs.data());
661
+ return res;
662
+ }
663
+
664
+ batch_type batch_rhs() const
665
+ {
666
+ batch_type res = batch_type::load_unaligned(rhs.data());
667
+ return res;
668
+ }
669
+ };
670
+
671
+ TEST_CASE_TEMPLATE("[xsimd complex batches]", B, BATCH_COMPLEX_TYPES)
672
+ {
673
+ batch_complex_test<B> Test;
674
+ SUBCASE("load_store") { Test.test_load_store(); }
675
+
676
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
677
+ SUBCASE("load_store_xtl")
678
+ {
679
+ Test.test_load_store_xtl();
680
+ }
681
+ #endif
682
+
683
+ SUBCASE("constructors")
684
+ {
685
+ Test.test_constructors();
686
+ }
687
+
688
+ SUBCASE("access_operator") { Test.test_access_operator(); }
689
+
690
+ SUBCASE("first element") { Test.test_first_element(); }
691
+
692
+ SUBCASE("arithmetic") { Test.test_arithmetic(); }
693
+
694
+ SUBCASE("computed_assignment") { Test.test_computed_assignment(); }
695
+
696
+ SUBCASE("conj_norm_proj") { Test.test_conj_norm_proj(); }
697
+
698
+ SUBCASE("conj_norm_proj_real") { Test.test_conj_norm_proj_real(); }
699
+
700
+ SUBCASE("polar") { Test.test_polar(); }
701
+
702
+ SUBCASE("horizontal_operations") { Test.test_horizontal_operations(); }
703
+
704
+ SUBCASE("fused_operations") { Test.test_fused_operations(); }
705
+
706
+ SUBCASE("boolean_conversion") { Test.test_boolean_conversion(); }
707
+
708
+ #ifndef __FAST_MATH__
709
+ SUBCASE("isnan") { Test.test_isnan(); }
710
+ #endif
711
+ }
712
+ #endif