sequenzo 0.1.24__cp311-cp311-macosx_10_9_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sequenzo might be problematic. Click here for more details.

Files changed (264) hide show
  1. _sequenzo_fastcluster.cpython-311-darwin.so +0 -0
  2. sequenzo/__init__.py +240 -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 +474 -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-311-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-311-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 +20 -0
  30. sequenzo/data_preprocessing/helpers.py +256 -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/mvad.csv +713 -0
  44. sequenzo/datasets/pairfam_family.csv +1867 -0
  45. sequenzo/datasets/polyadic_samplec1.csv +61 -0
  46. sequenzo/datasets/polyadic_samplep1.csv +61 -0
  47. sequenzo/datasets/polyadic_seqc1.csv +61 -0
  48. sequenzo/datasets/polyadic_seqp1.csv +61 -0
  49. sequenzo/define_sequence_data.py +609 -0
  50. sequenzo/dissimilarity_measures/__init__.py +31 -0
  51. sequenzo/dissimilarity_measures/c_code.cpython-311-darwin.so +0 -0
  52. sequenzo/dissimilarity_measures/get_distance_matrix.py +702 -0
  53. sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +241 -0
  54. sequenzo/dissimilarity_measures/src/DHDdistance.cpp +148 -0
  55. sequenzo/dissimilarity_measures/src/LCPdistance.cpp +114 -0
  56. sequenzo/dissimilarity_measures/src/OMdistance.cpp +247 -0
  57. sequenzo/dissimilarity_measures/src/OMspellDistance.cpp +281 -0
  58. sequenzo/dissimilarity_measures/src/__init__.py +0 -0
  59. sequenzo/dissimilarity_measures/src/dist2matrix.cpp +63 -0
  60. sequenzo/dissimilarity_measures/src/dp_utils.h +160 -0
  61. sequenzo/dissimilarity_measures/src/module.cpp +34 -0
  62. sequenzo/dissimilarity_measures/src/setup.py +30 -0
  63. sequenzo/dissimilarity_measures/src/utils.h +25 -0
  64. sequenzo/dissimilarity_measures/src/xsimd/.github/cmake-test/main.cpp +6 -0
  65. sequenzo/dissimilarity_measures/src/xsimd/benchmark/main.cpp +159 -0
  66. sequenzo/dissimilarity_measures/src/xsimd/benchmark/xsimd_benchmark.hpp +565 -0
  67. sequenzo/dissimilarity_measures/src/xsimd/docs/source/conf.py +37 -0
  68. sequenzo/dissimilarity_measures/src/xsimd/examples/mandelbrot.cpp +330 -0
  69. sequenzo/dissimilarity_measures/src/xsimd/examples/pico_bench.hpp +246 -0
  70. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_arithmetic.hpp +266 -0
  71. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_complex.hpp +112 -0
  72. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_details.hpp +323 -0
  73. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_logical.hpp +218 -0
  74. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_math.hpp +2583 -0
  75. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_memory.hpp +880 -0
  76. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_rounding.hpp +72 -0
  77. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_swizzle.hpp +174 -0
  78. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_trigo.hpp +978 -0
  79. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx.hpp +1924 -0
  80. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx2.hpp +1144 -0
  81. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512bw.hpp +656 -0
  82. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512cd.hpp +28 -0
  83. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512dq.hpp +244 -0
  84. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512er.hpp +20 -0
  85. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512f.hpp +2650 -0
  86. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512ifma.hpp +20 -0
  87. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512pf.hpp +20 -0
  88. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi.hpp +77 -0
  89. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi2.hpp +131 -0
  90. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512bw.hpp +20 -0
  91. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp +20 -0
  92. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avxvnni.hpp +20 -0
  93. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common.hpp +24 -0
  94. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common_fwd.hpp +77 -0
  95. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_constants.hpp +393 -0
  96. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_emulated.hpp +788 -0
  97. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx.hpp +93 -0
  98. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx2.hpp +46 -0
  99. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_sse.hpp +97 -0
  100. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma4.hpp +92 -0
  101. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_i8mm_neon64.hpp +17 -0
  102. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_isa.hpp +142 -0
  103. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon.hpp +3142 -0
  104. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon64.hpp +1543 -0
  105. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_rvv.hpp +1513 -0
  106. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_scalar.hpp +1260 -0
  107. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse2.hpp +2024 -0
  108. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse3.hpp +67 -0
  109. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_1.hpp +339 -0
  110. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_2.hpp +44 -0
  111. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_ssse3.hpp +186 -0
  112. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sve.hpp +1155 -0
  113. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_vsx.hpp +892 -0
  114. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_wasm.hpp +1780 -0
  115. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_arch.hpp +240 -0
  116. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_config.hpp +484 -0
  117. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_cpuid.hpp +269 -0
  118. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_inline.hpp +27 -0
  119. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/math/xsimd_rem_pio2.hpp +719 -0
  120. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_aligned_allocator.hpp +349 -0
  121. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_alignment.hpp +91 -0
  122. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_all_registers.hpp +55 -0
  123. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_api.hpp +2765 -0
  124. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx2_register.hpp +44 -0
  125. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512bw_register.hpp +51 -0
  126. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512cd_register.hpp +51 -0
  127. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512dq_register.hpp +51 -0
  128. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512er_register.hpp +51 -0
  129. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512f_register.hpp +77 -0
  130. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512ifma_register.hpp +51 -0
  131. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512pf_register.hpp +51 -0
  132. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi2_register.hpp +51 -0
  133. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi_register.hpp +51 -0
  134. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512bw_register.hpp +54 -0
  135. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp +53 -0
  136. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx_register.hpp +64 -0
  137. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avxvnni_register.hpp +44 -0
  138. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch.hpp +1524 -0
  139. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch_constant.hpp +300 -0
  140. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_common_arch.hpp +47 -0
  141. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_emulated_register.hpp +80 -0
  142. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx2_register.hpp +50 -0
  143. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx_register.hpp +50 -0
  144. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_sse_register.hpp +50 -0
  145. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma4_register.hpp +50 -0
  146. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_i8mm_neon64_register.hpp +55 -0
  147. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon64_register.hpp +55 -0
  148. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon_register.hpp +154 -0
  149. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_register.hpp +94 -0
  150. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_rvv_register.hpp +506 -0
  151. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse2_register.hpp +59 -0
  152. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse3_register.hpp +49 -0
  153. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_1_register.hpp +48 -0
  154. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_2_register.hpp +48 -0
  155. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_ssse3_register.hpp +48 -0
  156. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sve_register.hpp +156 -0
  157. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_traits.hpp +337 -0
  158. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_utils.hpp +536 -0
  159. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_vsx_register.hpp +77 -0
  160. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_wasm_register.hpp +59 -0
  161. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/xsimd.hpp +75 -0
  162. sequenzo/dissimilarity_measures/src/xsimd/test/architectures/dummy.cpp +7 -0
  163. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set.cpp +13 -0
  164. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean.cpp +24 -0
  165. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_aligned.cpp +25 -0
  166. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_arch_independent.cpp +28 -0
  167. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_tag_dispatch.cpp +25 -0
  168. sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_abstract_batches.cpp +7 -0
  169. sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_parametric_batches.cpp +8 -0
  170. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum.hpp +31 -0
  171. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_avx2.cpp +3 -0
  172. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_sse2.cpp +3 -0
  173. sequenzo/dissimilarity_measures/src/xsimd/test/doc/writing_vectorized_code.cpp +11 -0
  174. sequenzo/dissimilarity_measures/src/xsimd/test/main.cpp +31 -0
  175. sequenzo/dissimilarity_measures/src/xsimd/test/test_api.cpp +230 -0
  176. sequenzo/dissimilarity_measures/src/xsimd/test/test_arch.cpp +217 -0
  177. sequenzo/dissimilarity_measures/src/xsimd/test/test_basic_math.cpp +183 -0
  178. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch.cpp +1049 -0
  179. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_bool.cpp +508 -0
  180. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_cast.cpp +409 -0
  181. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_complex.cpp +712 -0
  182. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_constant.cpp +286 -0
  183. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_float.cpp +141 -0
  184. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_int.cpp +365 -0
  185. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_manip.cpp +308 -0
  186. sequenzo/dissimilarity_measures/src/xsimd/test/test_bitwise_cast.cpp +222 -0
  187. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_exponential.cpp +226 -0
  188. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_hyperbolic.cpp +183 -0
  189. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_power.cpp +265 -0
  190. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_trigonometric.cpp +236 -0
  191. sequenzo/dissimilarity_measures/src/xsimd/test/test_conversion.cpp +248 -0
  192. sequenzo/dissimilarity_measures/src/xsimd/test/test_custom_default_arch.cpp +28 -0
  193. sequenzo/dissimilarity_measures/src/xsimd/test/test_error_gamma.cpp +170 -0
  194. sequenzo/dissimilarity_measures/src/xsimd/test/test_explicit_batch_instantiation.cpp +32 -0
  195. sequenzo/dissimilarity_measures/src/xsimd/test/test_exponential.cpp +202 -0
  196. sequenzo/dissimilarity_measures/src/xsimd/test/test_extract_pair.cpp +92 -0
  197. sequenzo/dissimilarity_measures/src/xsimd/test/test_fp_manipulation.cpp +77 -0
  198. sequenzo/dissimilarity_measures/src/xsimd/test/test_gnu_source.cpp +30 -0
  199. sequenzo/dissimilarity_measures/src/xsimd/test/test_hyperbolic.cpp +167 -0
  200. sequenzo/dissimilarity_measures/src/xsimd/test/test_load_store.cpp +304 -0
  201. sequenzo/dissimilarity_measures/src/xsimd/test/test_memory.cpp +61 -0
  202. sequenzo/dissimilarity_measures/src/xsimd/test/test_poly_evaluation.cpp +64 -0
  203. sequenzo/dissimilarity_measures/src/xsimd/test/test_power.cpp +184 -0
  204. sequenzo/dissimilarity_measures/src/xsimd/test/test_rounding.cpp +199 -0
  205. sequenzo/dissimilarity_measures/src/xsimd/test/test_select.cpp +101 -0
  206. sequenzo/dissimilarity_measures/src/xsimd/test/test_shuffle.cpp +760 -0
  207. sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.cpp +4 -0
  208. sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.hpp +34 -0
  209. sequenzo/dissimilarity_measures/src/xsimd/test/test_traits.cpp +172 -0
  210. sequenzo/dissimilarity_measures/src/xsimd/test/test_trigonometric.cpp +208 -0
  211. sequenzo/dissimilarity_measures/src/xsimd/test/test_utils.hpp +611 -0
  212. sequenzo/dissimilarity_measures/src/xsimd/test/test_wasm/test_wasm_playwright.py +123 -0
  213. sequenzo/dissimilarity_measures/src/xsimd/test/test_xsimd_api.cpp +1460 -0
  214. sequenzo/dissimilarity_measures/utils/__init__.py +16 -0
  215. sequenzo/dissimilarity_measures/utils/get_LCP_length_for_2_seq.py +44 -0
  216. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.cpython-311-darwin.so +0 -0
  217. sequenzo/dissimilarity_measures/utils/seqconc.cpython-311-darwin.so +0 -0
  218. sequenzo/dissimilarity_measures/utils/seqdss.cpython-311-darwin.so +0 -0
  219. sequenzo/dissimilarity_measures/utils/seqdur.cpython-311-darwin.so +0 -0
  220. sequenzo/dissimilarity_measures/utils/seqlength.cpython-311-darwin.so +0 -0
  221. sequenzo/multidomain/__init__.py +23 -0
  222. sequenzo/multidomain/association_between_domains.py +311 -0
  223. sequenzo/multidomain/cat.py +431 -0
  224. sequenzo/multidomain/combt.py +519 -0
  225. sequenzo/multidomain/dat.py +89 -0
  226. sequenzo/multidomain/idcd.py +139 -0
  227. sequenzo/multidomain/linked_polyad.py +292 -0
  228. sequenzo/openmp_setup.py +233 -0
  229. sequenzo/prefix_tree/__init__.py +43 -0
  230. sequenzo/prefix_tree/individual_level_indicators.py +1274 -0
  231. sequenzo/prefix_tree/system_level_indicators.py +465 -0
  232. sequenzo/prefix_tree/utils.py +54 -0
  233. sequenzo/sequence_characteristics/__init__.py +40 -0
  234. sequenzo/sequence_characteristics/complexity_index.py +49 -0
  235. sequenzo/sequence_characteristics/overall_cross_sectional_entropy.py +220 -0
  236. sequenzo/sequence_characteristics/plot_characteristics.py +593 -0
  237. sequenzo/sequence_characteristics/simple_characteristics.py +311 -0
  238. sequenzo/sequence_characteristics/state_frequencies_and_entropy_per_sequence.py +39 -0
  239. sequenzo/sequence_characteristics/turbulence.py +155 -0
  240. sequenzo/sequence_characteristics/variance_of_spell_durations.py +86 -0
  241. sequenzo/sequence_characteristics/within_sequence_entropy.py +43 -0
  242. sequenzo/suffix_tree/__init__.py +48 -0
  243. sequenzo/suffix_tree/individual_level_indicators.py +1638 -0
  244. sequenzo/suffix_tree/system_level_indicators.py +456 -0
  245. sequenzo/suffix_tree/utils.py +56 -0
  246. sequenzo/visualization/__init__.py +29 -0
  247. sequenzo/visualization/plot_mean_time.py +194 -0
  248. sequenzo/visualization/plot_modal_state.py +276 -0
  249. sequenzo/visualization/plot_most_frequent_sequences.py +147 -0
  250. sequenzo/visualization/plot_relative_frequency.py +404 -0
  251. sequenzo/visualization/plot_sequence_index.py +951 -0
  252. sequenzo/visualization/plot_single_medoid.py +153 -0
  253. sequenzo/visualization/plot_state_distribution.py +627 -0
  254. sequenzo/visualization/plot_transition_matrix.py +190 -0
  255. sequenzo/visualization/utils/__init__.py +23 -0
  256. sequenzo/visualization/utils/utils.py +310 -0
  257. sequenzo/with_event_history_analysis/__init__.py +35 -0
  258. sequenzo/with_event_history_analysis/sequence_analysis_multi_state_model.py +850 -0
  259. sequenzo/with_event_history_analysis/sequence_history_analysis.py +283 -0
  260. sequenzo-0.1.24.dist-info/METADATA +255 -0
  261. sequenzo-0.1.24.dist-info/RECORD +264 -0
  262. sequenzo-0.1.24.dist-info/WHEEL +5 -0
  263. sequenzo-0.1.24.dist-info/licenses/LICENSE +28 -0
  264. sequenzo-0.1.24.dist-info/top_level.txt +2 -0
@@ -0,0 +1,365 @@
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
+ #include <climits>
18
+
19
+ namespace xsimd
20
+ {
21
+ template <class T, std::size_t N = T::size>
22
+ struct test_int_min_max
23
+ {
24
+ bool run()
25
+ {
26
+ return true;
27
+ }
28
+ };
29
+
30
+ template <class T>
31
+ struct test_int_min_max<batch<T>, 2>
32
+ {
33
+ void run()
34
+ {
35
+ using B = batch<T>;
36
+ using BB = batch_bool<T>;
37
+ using A = std::array<T, 2>;
38
+
39
+ T max = std::numeric_limits<T>::max();
40
+ T min = std::numeric_limits<T>::min();
41
+ std::array<T, 2> maxmin_cmp { { max, min } };
42
+ B maxmin = { max, min };
43
+ INFO("numeric max and min");
44
+ CHECK_BATCH_EQ(maxmin, maxmin_cmp);
45
+
46
+ B a = { 1, 3 };
47
+ B b(2);
48
+ B c = { 2, 3 };
49
+
50
+ auto r1 = xsimd::max(a, c);
51
+ auto r3 = xsimd::min(a, c);
52
+
53
+ INFO("max");
54
+ CHECK_BATCH_EQ(r1, (A { { 2, 3 } }));
55
+ INFO("min");
56
+ CHECK_BATCH_EQ(r3, (A { { 1, 3 } }));
57
+
58
+ auto r4 = a < b; // test lt
59
+ BB e4 = { 1, 0 };
60
+ CHECK_UNARY(xsimd::all(r4 == e4));
61
+ }
62
+ };
63
+
64
+ template <class T>
65
+ struct test_int_min_max<batch<T>, 4>
66
+ {
67
+ void run()
68
+ {
69
+ using B = batch<T>;
70
+ using BB = batch_bool<T>;
71
+ using A = std::array<T, 4>;
72
+
73
+ B a = { 1, 3, 1, 1 };
74
+ B b(2);
75
+ B c = { 2, 3, 2, 3 };
76
+
77
+ auto r1 = xsimd::max(a, c);
78
+ auto r3 = xsimd::min(a, c);
79
+
80
+ INFO("max");
81
+ CHECK_BATCH_EQ(r1, (A { { 2, 3, 2, 3 } }));
82
+ INFO("min");
83
+ CHECK_BATCH_EQ(r3, (A { { 1, 3, 1, 1 } }));
84
+
85
+ auto r4 = a < b; // test lt
86
+ BB e4 = { 1, 0, 1, 1 };
87
+ CHECK_UNARY(xsimd::all(r4 == e4));
88
+ }
89
+ };
90
+
91
+ template <class T>
92
+ struct test_int_min_max<batch<T>, 8>
93
+ {
94
+ void run()
95
+ {
96
+ using B = batch<T>;
97
+ using BB = batch_bool<T>;
98
+ using A = std::array<T, 8>;
99
+
100
+ T max = std::numeric_limits<T>::max();
101
+ T min = std::numeric_limits<T>::min();
102
+ std::array<T, 8> maxmin_cmp { { 0, 0, max, 0, min, 0, 0, 0 } };
103
+ B maxmin = { 0, 0, max, 0, min, 0, 0, 0 };
104
+ INFO("numeric max and min");
105
+ CHECK_BATCH_EQ(maxmin, maxmin_cmp);
106
+
107
+ B a { 1, 3, 1, 3, 1, 1, 3, 3 };
108
+ B b { 2 };
109
+ B c { 2, 3, 2, 3, 2, 3, 2, 3 };
110
+
111
+ auto r1 = xsimd::max(a, c);
112
+ auto r3 = xsimd::min(a, c);
113
+ auto r4 = a < b; // test lt
114
+ INFO("max");
115
+ CHECK_BATCH_EQ(r1, (A { { 2, 3, 2, 3, 2, 3, 3, 3 } }));
116
+ INFO("min");
117
+ CHECK_BATCH_EQ(r3, (A { { 1, 3, 1, 3, 1, 1, 2, 3 } }));
118
+
119
+ BB e4 = { 1, 0, 1, 0, 1, 1, 0, 0 };
120
+ CHECK_UNARY(xsimd::all(r4 == e4));
121
+ }
122
+ };
123
+
124
+ template <class T>
125
+ struct test_int_min_max<batch<T>, 16>
126
+ {
127
+ void run()
128
+ {
129
+ using B = batch<T>;
130
+ using BB = batch_bool<T>;
131
+ using A = std::array<T, 16>;
132
+
133
+ T max = std::numeric_limits<T>::max();
134
+ T min = std::numeric_limits<T>::min();
135
+ std::array<T, 16> maxmin_cmp { { 0, 0, max, 0, min, 0, 0, 0, 0, 0, max, 0, min, 0, 0, 0 } };
136
+ B maxmin = { 0, 0, max, 0, min, 0, 0, 0, 0, 0, max, 0, min, 0, 0, 0 };
137
+ INFO("numeric max and min");
138
+ CHECK_BATCH_EQ(maxmin, maxmin_cmp);
139
+
140
+ B a = { 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, min, max, max, min };
141
+ B b(2);
142
+ B c = { 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3 };
143
+ auto r1 = xsimd::max(a, b);
144
+ auto r3 = xsimd::min(a, b);
145
+ auto r4 = a < b; // test lt
146
+ auto r5 = a == c;
147
+ auto r6 = a != c;
148
+
149
+ INFO("max");
150
+ CHECK_BATCH_EQ(r1, (A { { 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 2, max, max, 2 } }));
151
+ INFO("min");
152
+ CHECK_BATCH_EQ(r3, (A { { 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, min, 2, 2, min } }));
153
+
154
+ BB e4 = { 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1 };
155
+ CHECK_UNARY(xsimd::all(r4 == e4));
156
+
157
+ BB e5 = { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0 };
158
+ CHECK_UNARY(xsimd::all(r5 == e5));
159
+ CHECK_UNARY(xsimd::all(r6 == !e5));
160
+ }
161
+ };
162
+
163
+ template <class T>
164
+ struct test_int_min_max<batch<T>, 32>
165
+ {
166
+ void run()
167
+ {
168
+ using B = batch<T>;
169
+ using BB = batch_bool<T>;
170
+ using A = std::array<T, 32>;
171
+ T max = std::numeric_limits<T>::max();
172
+ T min = std::numeric_limits<T>::min();
173
+
174
+ B a = { 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, min, max, max, min };
175
+ B b = 2;
176
+
177
+ auto r1 = xsimd::max(a, b);
178
+ auto r3 = xsimd::min(a, b);
179
+ auto r4 = a < b; // test lt
180
+ INFO("max");
181
+ CHECK_BATCH_EQ(r1, (A { { 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 2, max, max, 2 } }));
182
+ INFO("min");
183
+ CHECK_BATCH_EQ(r3, (A { { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, min, 2, 2, min } }));
184
+
185
+ BB e4 = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1 };
186
+ CHECK_UNARY(xsimd::all(r4 == e4));
187
+ }
188
+ };
189
+ }
190
+
191
+ template <class B>
192
+ struct batch_int_test
193
+ {
194
+ using batch_type = B;
195
+ using value_type = typename B::value_type;
196
+ static constexpr size_t size = B::size;
197
+ using array_type = std::array<value_type, size>;
198
+ using bool_array_type = std::array<bool, size>;
199
+
200
+ array_type lhs;
201
+ array_type rhs;
202
+ array_type shift;
203
+
204
+ batch_int_test()
205
+ {
206
+ using signed_value_type = typename std::make_signed<value_type>::type;
207
+ for (size_t i = 0; i < size; ++i)
208
+ {
209
+ bool negative_lhs = std::is_signed<value_type>::value && (i % 2 == 1);
210
+ lhs[i] = value_type(i) * (negative_lhs ? -10 : 10);
211
+ if (lhs[i] == value_type(0))
212
+ {
213
+ lhs[i] += value_type(1);
214
+ }
215
+ rhs[i] = value_type(i) + value_type(4);
216
+ shift[i] = signed_value_type(i) % (CHAR_BIT * sizeof(value_type));
217
+ }
218
+ }
219
+
220
+ void test_modulo() const
221
+ {
222
+ // batch % batch
223
+ {
224
+ array_type expected;
225
+ std::transform(lhs.cbegin(), lhs.cend(), rhs.cbegin(), expected.begin(),
226
+ [](const value_type& l, const value_type& r)
227
+ { return l % r; });
228
+ batch_type res = batch_lhs() % batch_rhs();
229
+ INFO("batch % batch");
230
+ CHECK_BATCH_EQ(res, expected);
231
+ }
232
+ }
233
+
234
+ void test_shift() const
235
+ {
236
+ int32_t nb_sh = 3;
237
+ // batch << scalar
238
+ {
239
+ array_type expected;
240
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
241
+ [nb_sh](const value_type& v)
242
+ { return xsimd::abs(v) << nb_sh; });
243
+ batch_type res = abs(batch_lhs()) << nb_sh;
244
+ INFO("batch << scalar");
245
+ CHECK_BATCH_EQ(res, expected);
246
+ }
247
+ // batch << batch
248
+ {
249
+ array_type expected;
250
+ std::transform(lhs.cbegin(), lhs.cend(), shift.cbegin(), expected.begin(),
251
+ [](const value_type& l, const value_type& r)
252
+ { return xsimd::abs(l) << r; });
253
+ batch_type res = abs(batch_lhs()) << batch_shift();
254
+ INFO("batch << batch");
255
+ CHECK_BATCH_EQ(res, expected);
256
+ }
257
+ // batch >> scalar
258
+ {
259
+ array_type expected;
260
+ std::transform(lhs.cbegin(), lhs.cend(), expected.begin(),
261
+ [nb_sh](const value_type& v)
262
+ { return v >> nb_sh; });
263
+ batch_type res = batch_lhs() >> nb_sh;
264
+ INFO("batch >> scalar");
265
+ CHECK_BATCH_EQ(res, expected);
266
+ }
267
+ // batch >> batch
268
+ {
269
+ array_type expected;
270
+ std::transform(lhs.cbegin(), lhs.cend(), shift.cbegin(), expected.begin(),
271
+ [](const value_type& l, const value_type& r)
272
+ { return l >> r; });
273
+ batch_type res = batch_lhs() >> batch_shift();
274
+ INFO("batch >> batch");
275
+ CHECK_BATCH_EQ(res, expected);
276
+ }
277
+ }
278
+
279
+ void test_more_shift() const
280
+ {
281
+ int32_t s = static_cast<int32_t>(sizeof(value_type) * 8);
282
+ batch_type lhs = batch_type(value_type(1));
283
+ batch_type res;
284
+
285
+ for (int32_t i = 0; i < s; ++i)
286
+ {
287
+ res = lhs << i;
288
+ batch_type expected(value_type(1) << i);
289
+ CHECK_BATCH_EQ(res, expected);
290
+ }
291
+ lhs = batch_type(std::numeric_limits<value_type>::max());
292
+ for (int32_t i = 0; i < s; ++i)
293
+ {
294
+ res = lhs >> i;
295
+ batch_type expected(std::numeric_limits<value_type>::max() >> i);
296
+ CHECK_BATCH_EQ(res, expected);
297
+ }
298
+ }
299
+
300
+ void test_min_max() const
301
+ {
302
+ xsimd::test_int_min_max<batch_type> t;
303
+ t.run();
304
+ }
305
+
306
+ void test_less_than_underflow() const
307
+ {
308
+ batch_type test_negative_compare = batch_type(5) - 6;
309
+ if (std::is_unsigned<value_type>::value)
310
+ {
311
+ CHECK_FALSE(xsimd::any(test_negative_compare < 1));
312
+ }
313
+ else
314
+ {
315
+ CHECK_UNARY(xsimd::all(test_negative_compare < 1));
316
+ }
317
+ }
318
+
319
+ private:
320
+ batch_type batch_lhs() const
321
+ {
322
+ return batch_type::load_unaligned(lhs.data());
323
+ }
324
+
325
+ batch_type batch_rhs() const
326
+ {
327
+ return batch_type::load_unaligned(rhs.data());
328
+ }
329
+
330
+ batch_type batch_shift() const
331
+ {
332
+ return batch_type::load_unaligned(shift.data());
333
+ }
334
+ };
335
+
336
+ TEST_CASE_TEMPLATE("[batch int tests]", B, BATCH_INT_TYPES)
337
+ {
338
+ batch_int_test<B> Test;
339
+
340
+ SUBCASE("modulo")
341
+ {
342
+ Test.test_modulo();
343
+ }
344
+
345
+ SUBCASE("shift")
346
+ {
347
+ Test.test_shift();
348
+ }
349
+
350
+ SUBCASE("more_shift")
351
+ {
352
+ Test.test_more_shift();
353
+ }
354
+
355
+ SUBCASE("min_max")
356
+ {
357
+ Test.test_min_max();
358
+ }
359
+
360
+ SUBCASE("less_than_underflow")
361
+ {
362
+ Test.test_less_than_underflow();
363
+ }
364
+ }
365
+ #endif
@@ -0,0 +1,308 @@
1
+ /***************************************************************************
2
+ * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3
+ * Martin Renou *
4
+ * Copyright (c) QuantStack *
5
+ * Copyright (c) Serge Guelton *
6
+ * Copyright (c) Marco Barbone *
7
+ * *
8
+ * Distributed under the terms of the BSD 3-Clause License. *
9
+ * *
10
+ * The full license is in the file LICENSE, distributed with this software. *
11
+ ****************************************************************************/
12
+
13
+ #include "xsimd/xsimd.hpp"
14
+ #ifndef XSIMD_NO_SUPPORTED_ARCHITECTURE
15
+
16
+ #include "test_utils.hpp"
17
+
18
+ // Compile time tests for include/xsimd/arch/common/xsimd_common_swizzle.hpp
19
+ namespace xsimd
20
+ {
21
+ namespace kernel
22
+ {
23
+ namespace detail
24
+ {
25
+ // ────────────────────────────────────────────────────────────────────────
26
+ // compile-time tests (identity, all-different, dup-lo, dup-hi)
27
+ // 8-lane identity
28
+ static_assert(is_identity<std::uint32_t, 0, 1, 2, 3, 4, 5, 6, 7>(), "identity failed");
29
+ // 8-lane reverse is all-different but not identity
30
+ static_assert(is_all_different<std::uint32_t, 7, 6, 5, 4, 3, 2, 1, 0>(), "all-diff failed");
31
+ static_assert(!is_identity<std::uint32_t, 7, 6, 5, 4, 3, 2, 1, 0>(), "identity on reverse");
32
+ // 8-lane dup-lo (repeat 0..3 twice)
33
+ static_assert(is_dup_lo<std::uint32_t, 0, 1, 2, 3, 0, 1, 2, 3>(), "dup_lo failed");
34
+ static_assert(!is_dup_hi<std::uint32_t, 0, 1, 2, 3, 0, 1, 2, 3>(), "dup_hi on dup_lo");
35
+ // 8-lane dup-hi (repeat 4..7 twice)
36
+ static_assert(is_dup_hi<std::uint32_t, 4, 5, 6, 7, 4, 5, 6, 7>(), "dup_hi failed");
37
+ static_assert(!is_dup_lo<std::uint32_t, 4, 5, 6, 7, 4, 5, 6, 7>(), "dup_lo on dup_hi");
38
+ // ────────────────────────────────────────────────────────────────────────
39
+ // 4-lane identity
40
+ static_assert(is_identity<std::uint32_t, 0, 1, 2, 3>(), "4-lane identity failed");
41
+ // 4-lane reverse all-different but not identity
42
+ static_assert(is_all_different<std::uint32_t, 3, 2, 1, 0>(), "4-lane all-diff failed");
43
+ static_assert(!is_identity<std::uint32_t, 3, 2, 1, 0>(), "4-lane identity on reverse");
44
+ // 4-lane dup-lo (repeat 0..1 twice)
45
+ static_assert(is_dup_lo<std::uint32_t, 0, 1, 0, 1>(), "4-lane dup_lo failed");
46
+ static_assert(!is_dup_hi<std::uint32_t, 0, 1, 0, 1>(), "4-lane dup_hi on dup_lo");
47
+ // 4-lane dup-hi (repeat 2..3 twice)
48
+ static_assert(is_dup_hi<std::uint32_t, 2, 3, 2, 3>(), "4-lane dup_hi failed");
49
+ static_assert(!is_dup_lo<std::uint32_t, 2, 3, 2, 3>(), "4-lane dup_lo on dup_hi");
50
+
51
+ static_assert(is_cross_lane<0, 1, 0, 1>(), "dup-lo only → crossing");
52
+ static_assert(is_cross_lane<2, 3, 2, 3>(), "dup-hi only → crossing");
53
+ static_assert(is_cross_lane<0, 3, 3, 3>(), "one low + rest high → crossing");
54
+ static_assert(!is_cross_lane<1, 0, 2, 3>(), "mixed low/high → no crossing");
55
+ static_assert(!is_cross_lane<0, 1, 2, 3>(), "mixed low/high → no crossing");
56
+
57
+ static_assert(no_duplicates_v<0, 1, 2, 3>(), "N=4: [0,1,2,3] → distinct");
58
+ static_assert(!no_duplicates_v<0, 1, 2, 2>(), "N=4: [0,1,2,2] → dup");
59
+
60
+ static_assert(no_duplicates_v<0, 1, 2, 3, 4, 5, 6, 7>(), "N=8: [0..7] → distinct");
61
+ static_assert(!no_duplicates_v<0, 1, 2, 3, 4, 5, 6, 0>(), "N=8: last repeats 0");
62
+ }
63
+ }
64
+ }
65
+
66
+ namespace xsimd
67
+ {
68
+ template <template <class> class Pattern, class Vec>
69
+ void fill_pattern(Vec& dst, const Vec& src)
70
+ {
71
+ using size_type = typename Vec::size_type;
72
+ for (size_type i = 0; i < src.size(); ++i)
73
+ {
74
+ dst[i] = src[Pattern<size_type>::get(i, static_cast<size_type>(src.size()))];
75
+ }
76
+ }
77
+
78
+ template <class T>
79
+ struct Reversor
80
+ {
81
+ static constexpr T get(T i, T n) { return n - 1 - i; }
82
+ };
83
+ template <class T>
84
+ struct Last
85
+ {
86
+ static constexpr T get(T, T n) { return n - 1; }
87
+ };
88
+ template <class T>
89
+ struct DupReal
90
+ {
91
+ static constexpr T get(T i, T) { return (i & ~T { 1 }); }
92
+ };
93
+
94
+ template <class T>
95
+ struct DupImag
96
+ {
97
+ static constexpr T get(T i, T) { return (i & ~T { 1 }) + 1; }
98
+ };
99
+ template <class T>
100
+ struct SwapRI
101
+ {
102
+ static constexpr T get(T i, T)
103
+ {
104
+ return i ^ T { 1 };
105
+ }
106
+ };
107
+ template <class T>
108
+ struct Identity
109
+ {
110
+ static constexpr T get(T i, T) { return i; }
111
+ };
112
+ template <class T>
113
+ struct DupLowPair
114
+ {
115
+ static constexpr T get(T i, T) { return i / 2; }
116
+ };
117
+ template <class T>
118
+ struct DupHighPair
119
+ {
120
+ static constexpr T get(T i, T n) { return n / 2 + i / 2; }
121
+ };
122
+
123
+ template <class T>
124
+ struct RotateRight1
125
+ {
126
+ static constexpr T get(T i, T n) { return (i + n - 1) % n; }
127
+ };
128
+ template <class T>
129
+ struct RotateLeft1
130
+ {
131
+ static constexpr T get(T i, T n) { return (i + 1) % n; }
132
+ };
133
+
134
+ template <class T>
135
+ struct ReversePairs
136
+ {
137
+ static constexpr T get(T i, T) { return (i & ~T { 1 }) | (1 - (i & T { 1 })); }
138
+ };
139
+ template <class T>
140
+ struct EvenThenOdd
141
+ {
142
+ static constexpr T get(T i, T n)
143
+ {
144
+ return (i < n / 2 ? 2 * i : 2 * (i - n / 2) + 1);
145
+ }
146
+ };
147
+ template <class T>
148
+ struct OddThenEven
149
+ {
150
+ static constexpr T get(T i, T n)
151
+ {
152
+ return (i < n / 2 ? 2 * i + 1 : 2 * (i - n / 2));
153
+ }
154
+ };
155
+ template <class T>
156
+ struct InterleavePairs
157
+ {
158
+ static constexpr T get(T i, T n)
159
+ {
160
+ return (i & 1) ? (i / 2 + n / 2) : (i / 2);
161
+ }
162
+ };
163
+ template <class T>
164
+ struct as_index
165
+ {
166
+ using type = xsimd::as_unsigned_integer_t<T>;
167
+ };
168
+
169
+ template <class T>
170
+ struct as_index<std::complex<T>> : as_index<T>
171
+ {
172
+ };
173
+ } // namespace xsimd
174
+
175
+ //------------------------------------------------------------------------------
176
+ // insert_test: unchanged from original
177
+ //------------------------------------------------------------------------------
178
+ template <class B>
179
+ struct insert_test
180
+ {
181
+ using batch_type = B;
182
+ using value_type = typename B::value_type;
183
+
184
+ void insert_first()
185
+ {
186
+ value_type fill_value = 0;
187
+ value_type sentinel_value = 1;
188
+ batch_type v(fill_value);
189
+ batch_type w = xsimd::insert(v, sentinel_value, xsimd::index<0>());
190
+ std::array<value_type, batch_type::size> data {};
191
+ w.store_unaligned(data.data());
192
+ CHECK_SCALAR_EQ(data.front(), sentinel_value);
193
+ for (std::size_t i = 1; i < batch_type::size; ++i)
194
+ CHECK_SCALAR_EQ(data[i], fill_value);
195
+ }
196
+
197
+ void insert_last()
198
+ {
199
+ value_type fill_value = 0;
200
+ value_type sentinel_value = 1;
201
+ batch_type v(fill_value);
202
+ batch_type w = xsimd::insert(v, sentinel_value,
203
+ xsimd::index<batch_type::size - 1>());
204
+ std::array<value_type, batch_type::size> data {};
205
+ w.store_unaligned(data.data());
206
+ for (std::size_t i = 0; i < batch_type::size - 1; ++i)
207
+ CHECK_SCALAR_EQ(data[i], fill_value);
208
+ CHECK_SCALAR_EQ(data.back(), sentinel_value);
209
+ }
210
+ };
211
+
212
+ TEST_CASE_TEMPLATE("[insert_test]", B, BATCH_TYPES)
213
+ {
214
+ insert_test<B> Test;
215
+ SUBCASE("insert_first") { Test.insert_first(); }
216
+ SUBCASE("insert_last") { Test.insert_last(); }
217
+ }
218
+
219
+ template <class B>
220
+ struct swizzle_test
221
+ {
222
+ using batch_type = B;
223
+ using value_type = typename B::value_type;
224
+ using arch_type = typename B::arch_type;
225
+ static constexpr std::size_t N = B::size;
226
+ using vec_t = std::array<value_type, N>;
227
+
228
+ // Build the input [1,3,5,...,2N-1]
229
+ static vec_t make_lhs()
230
+ {
231
+ vec_t v;
232
+ for (std::size_t i = 0; i < N; ++i)
233
+ v[i] = static_cast<value_type>(2 * i + 1);
234
+ return v;
235
+ }
236
+
237
+ template <template <class> class Pattern>
238
+ void run()
239
+ {
240
+ vec_t lhs = make_lhs();
241
+ vec_t expect = lhs;
242
+ xsimd::fill_pattern<Pattern>(expect, lhs);
243
+
244
+ auto b_lhs = batch_type::load_unaligned(lhs.data());
245
+ auto b_expect = batch_type::load_unaligned(expect.data());
246
+
247
+ using idx_t = typename xsimd::as_index<value_type>::type;
248
+ auto idx_batch = xsimd::make_batch_constant<idx_t, Pattern<idx_t>, arch_type>();
249
+
250
+ CHECK_BATCH_EQ(xsimd::swizzle(b_lhs, idx_batch), b_expect);
251
+ CHECK_BATCH_EQ(xsimd::swizzle(b_lhs,
252
+ static_cast<xsimd::batch<idx_t, arch_type>>(idx_batch)),
253
+ b_expect);
254
+ }
255
+
256
+ void rotate_right()
257
+ {
258
+ vec_t lhs = make_lhs(), expect;
259
+ std::rotate_copy(lhs.begin(), lhs.end() - 1, lhs.end(), expect.begin());
260
+ CHECK_BATCH_EQ(xsimd::rotate_right<1>(batch_type::load_unaligned(lhs.data())),
261
+ batch_type::load_unaligned(expect.data()));
262
+ }
263
+ void rotate_left()
264
+ {
265
+ vec_t lhs = make_lhs(), expect;
266
+ std::rotate_copy(lhs.begin(), lhs.begin() + 1, lhs.end(), expect.begin());
267
+ CHECK_BATCH_EQ(xsimd::rotate_left<1>(batch_type::load_unaligned(lhs.data())),
268
+ batch_type::load_unaligned(expect.data()));
269
+ }
270
+ void rotate_left_inv()
271
+ {
272
+ vec_t lhs = make_lhs(), expect;
273
+ std::rotate_copy(lhs.begin(), lhs.end() - 1, lhs.end(), expect.begin());
274
+ CHECK_BATCH_EQ(xsimd::rotate_left<N - 1>(batch_type::load_unaligned(lhs.data())),
275
+ batch_type::load_unaligned(expect.data()));
276
+ }
277
+ };
278
+
279
+ // Macro to instantiate one SUBCASE per pattern
280
+ #define XSIMD_SWIZZLE_PATTERN_CASE(PAT) \
281
+ SUBCASE(#PAT) { swizzle_test<B>().template run<xsimd::PAT>(); }
282
+
283
+ TEST_CASE_TEMPLATE("[swizzle]", B, BATCH_SWIZZLE_TYPES)
284
+ {
285
+ // All existing patterns:
286
+ XSIMD_SWIZZLE_PATTERN_CASE(Reversor);
287
+ XSIMD_SWIZZLE_PATTERN_CASE(Last);
288
+ XSIMD_SWIZZLE_PATTERN_CASE(DupReal);
289
+ XSIMD_SWIZZLE_PATTERN_CASE(DupImag);
290
+ XSIMD_SWIZZLE_PATTERN_CASE(SwapRI);
291
+ XSIMD_SWIZZLE_PATTERN_CASE(Identity);
292
+ XSIMD_SWIZZLE_PATTERN_CASE(DupLowPair);
293
+ XSIMD_SWIZZLE_PATTERN_CASE(DupHighPair);
294
+ XSIMD_SWIZZLE_PATTERN_CASE(RotateRight1);
295
+ XSIMD_SWIZZLE_PATTERN_CASE(RotateLeft1);
296
+ XSIMD_SWIZZLE_PATTERN_CASE(ReversePairs);
297
+ XSIMD_SWIZZLE_PATTERN_CASE(EvenThenOdd);
298
+ XSIMD_SWIZZLE_PATTERN_CASE(OddThenEven);
299
+ XSIMD_SWIZZLE_PATTERN_CASE(InterleavePairs);
300
+ // Rotation checks:
301
+ SUBCASE("rotate_left") { swizzle_test<B>().rotate_left(); }
302
+ SUBCASE("rotate_left_inv") { swizzle_test<B>().rotate_left_inv(); }
303
+ SUBCASE("rotate_right") { swizzle_test<B>().rotate_right(); }
304
+ }
305
+
306
+ #undef XSIMD_SWIZZLE_PATTERN_CASE
307
+
308
+ #endif /* XSIMD_NO_SUPPORTED_ARCHITECTURE */