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,506 @@
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) Yibo Cai *
7
+ * *
8
+ * Distributed under the terms of the BSD 3-Clause License. *
9
+ * *
10
+ * The full license is in the file LICENSE, distributed with this software. *
11
+ ****************************************************************************/
12
+
13
+ #ifndef XSIMD_RVV_REGISTER_HPP
14
+ #define XSIMD_RVV_REGISTER_HPP
15
+
16
+ #include "xsimd_common_arch.hpp"
17
+ #include "xsimd_register.hpp"
18
+
19
+ #if XSIMD_WITH_RVV
20
+ #include <riscv_vector.h>
21
+ #endif
22
+
23
+ namespace xsimd
24
+ {
25
+ namespace detail
26
+ {
27
+ /**
28
+ * @ingroup architectures
29
+ *
30
+ * RVV instructions (fixed vector size) for riscv
31
+ */
32
+ template <size_t Width>
33
+ struct rvv : xsimd::common
34
+ {
35
+ static constexpr size_t width = Width;
36
+ static constexpr bool supported() noexcept { return Width == XSIMD_RVV_BITS; }
37
+ static constexpr bool available() noexcept { return true; }
38
+ static constexpr bool requires_alignment() noexcept { return true; }
39
+ static constexpr std::size_t alignment() noexcept { return 16; }
40
+ static constexpr char const* name() noexcept { return "riscv+rvv"; }
41
+ };
42
+ }
43
+
44
+ #if XSIMD_WITH_RVV
45
+
46
+ using rvv = detail::rvv<__riscv_v_fixed_vlen>;
47
+
48
+ #define XSIMD_RVV_JOINT_(a, b, c) a##b##c
49
+ #define XSIMD_RVV_JOINT(a, b, c) XSIMD_RVV_JOINT_(a, b, c)
50
+ #define XSIMD_RVV_JOINT5(a, b, c, d, e) XSIMD_RVV_JOINT(XSIMD_RVV_JOINT(a, b, c), d, e)
51
+
52
+ #define XSIMD_RVV_TYPE_i(S, V) XSIMD_RVV_JOINT5(vint, S, m, V, _t)
53
+ #define XSIMD_RVV_TYPE_u(S, V) XSIMD_RVV_JOINT5(vuint, S, m, V, _t)
54
+ #define XSIMD_RVV_TYPE_f(S, V) XSIMD_RVV_JOINT5(vfloat, S, m, V, _t)
55
+ #define XSIMD_RVV_TYPE(T, S, V) XSIMD_RVV_JOINT(XSIMD_RVV_TYPE, _, T)(S, V)
56
+
57
+ namespace types
58
+ {
59
+ namespace detail
60
+ {
61
+ static constexpr size_t rvv_width_mf8 = XSIMD_RVV_BITS / 8;
62
+ static constexpr size_t rvv_width_mf4 = XSIMD_RVV_BITS / 4;
63
+ static constexpr size_t rvv_width_mf2 = XSIMD_RVV_BITS / 2;
64
+ static constexpr size_t rvv_width_m1 = XSIMD_RVV_BITS;
65
+
66
+ // Cope with gcc limitation, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116484
67
+ #define XSIMD_RVV_WIDTH_MF8 (XSIMD_RVV_BITS / 8)
68
+ #define XSIMD_RVV_WIDTH_MF4 (XSIMD_RVV_BITS / 4)
69
+ #define XSIMD_RVV_WIDTH_MF2 (XSIMD_RVV_BITS / 2)
70
+ #define XSIMD_RVV_WIDTH_M1 XSIMD_RVV_BITS
71
+
72
+ // rvv_type_info is a utility class to convert scalar type and
73
+ // bitwidth into rvv register types.
74
+ //
75
+ // * `type` is the unadorned vector type.
76
+ // * `fixed_type` is the same type, but with the storage attribute
77
+ // applied.
78
+ // * `byte_type` is the type which is the same size in unsigned
79
+ // bytes, used as an intermediate step for bit-cast operations,
80
+ // because only a subset of __riscv_vreinterpret() intrinsics
81
+ // exist -- but always enough to get us to bytes and back.
82
+ //
83
+ template <class T, size_t Width>
84
+ struct rvv_type_info;
85
+ #define XSIMD_RVV_MAKE_TYPE(scalar, t, s, vmul) \
86
+ template <> \
87
+ struct rvv_type_info<scalar, rvv_width_m1 * vmul> \
88
+ { \
89
+ static constexpr size_t width = rvv_width_m1 * vmul; \
90
+ using type = XSIMD_RVV_TYPE(t, s, vmul); \
91
+ using byte_type = XSIMD_RVV_TYPE(u, 8, vmul); \
92
+ using fixed_type = type __attribute__((riscv_rvv_vector_bits(/*width=*/XSIMD_RVV_WIDTH_M1 * vmul))); \
93
+ template <class U> \
94
+ static XSIMD_INLINE type bitcast(U x) noexcept \
95
+ { \
96
+ const auto words = XSIMD_RVV_JOINT5(__riscv_vreinterpret_, u, s, m, vmul)(x); \
97
+ return XSIMD_RVV_JOINT5(__riscv_vreinterpret_, t, s, m, vmul)(words); \
98
+ } \
99
+ template <class U> \
100
+ static XSIMD_INLINE byte_type as_bytes(U x) noexcept \
101
+ { \
102
+ static_assert(std::is_same<U, type>::value, "inconsistent conversion types"); \
103
+ const auto words = XSIMD_RVV_JOINT5(__riscv_vreinterpret_, u, s, m, vmul)(x); \
104
+ return XSIMD_RVV_JOINT5(__riscv_vreinterpret_, u, 8, m, vmul)(words); \
105
+ } \
106
+ }; \
107
+ template <> \
108
+ XSIMD_INLINE XSIMD_RVV_TYPE(t, s, vmul) rvv_type_info<scalar, rvv_width_m1 * vmul>::bitcast<XSIMD_RVV_TYPE(t, s, vmul)>(XSIMD_RVV_TYPE(t, s, vmul) x) noexcept { return x; }
109
+
110
+ #define XSIMD_RVV_MAKE_TYPES(vmul) \
111
+ XSIMD_RVV_MAKE_TYPE(int8_t, i, 8, vmul) \
112
+ XSIMD_RVV_MAKE_TYPE(uint8_t, u, 8, vmul) \
113
+ XSIMD_RVV_MAKE_TYPE(int16_t, i, 16, vmul) \
114
+ XSIMD_RVV_MAKE_TYPE(uint16_t, u, 16, vmul) \
115
+ XSIMD_RVV_MAKE_TYPE(int32_t, i, 32, vmul) \
116
+ XSIMD_RVV_MAKE_TYPE(uint32_t, u, 32, vmul) \
117
+ XSIMD_RVV_MAKE_TYPE(int64_t, i, 64, vmul) \
118
+ XSIMD_RVV_MAKE_TYPE(uint64_t, u, 64, vmul) \
119
+ XSIMD_RVV_MAKE_TYPE(float, f, 32, vmul) \
120
+ XSIMD_RVV_MAKE_TYPE(double, f, 64, vmul)
121
+
122
+ XSIMD_RVV_MAKE_TYPES(8)
123
+ XSIMD_RVV_MAKE_TYPES(4)
124
+ XSIMD_RVV_MAKE_TYPES(2)
125
+ XSIMD_RVV_MAKE_TYPES(1)
126
+ #undef XSIMD_RVV_TYPE
127
+ #undef XSIMD_RVV_TYPE_f
128
+ #undef XSIMD_RVV_TYPE_u
129
+ #undef XSIMD_RVV_TYPE_i
130
+ #undef XSIMD_RVV_MAKE_TYPES
131
+ #undef XSIMD_RVV_MAKE_TYPE
132
+
133
+ // Specialization needed for #1058
134
+ template <>
135
+ XSIMD_INLINE rvv_type_info<int8_t, rvv_width_m1 * 8>::type
136
+ rvv_type_info<int8_t, rvv_width_m1 * 8>::bitcast<__rvv_uint8m8_t>(
137
+ __rvv_uint8m8_t x) noexcept
138
+ {
139
+ return __riscv_vreinterpret_i8m8(x);
140
+ }
141
+ template <>
142
+ XSIMD_INLINE rvv_type_info<int8_t, rvv_width_m1 * 1>::type
143
+ rvv_type_info<int8_t, rvv_width_m1 * 1>::bitcast<__rvv_uint8m1_t>(
144
+ __rvv_uint8m1_t x) noexcept
145
+ {
146
+ return __riscv_vreinterpret_i8m1(x);
147
+ }
148
+ template <>
149
+ XSIMD_INLINE rvv_type_info<uint16_t, rvv_width_m1 * 1>::type
150
+ rvv_type_info<uint16_t, rvv_width_m1 * 1>::bitcast<__rvv_uint8m1_t>(
151
+ __rvv_uint8m1_t x) noexcept
152
+ {
153
+ return __riscv_vreinterpret_u16m1(x);
154
+ }
155
+ template <>
156
+ XSIMD_INLINE rvv_type_info<uint32_t, rvv_width_m1 * 1>::type
157
+ rvv_type_info<uint32_t, rvv_width_m1 * 1>::bitcast<__rvv_uint8m1_t>(
158
+ __rvv_uint8m1_t x) noexcept
159
+ {
160
+ return __riscv_vreinterpret_u32m1(x);
161
+ }
162
+ template <>
163
+ XSIMD_INLINE rvv_type_info<uint64_t, rvv_width_m1 * 1>::type
164
+ rvv_type_info<uint64_t, rvv_width_m1 * 1>::bitcast<__rvv_uint8m1_t>(
165
+ __rvv_uint8m1_t x) noexcept
166
+ {
167
+ return __riscv_vreinterpret_u64m1(x);
168
+ }
169
+
170
+ //
171
+
172
+ template <>
173
+ XSIMD_INLINE rvv_type_info<int8_t, rvv_width_m1 * 8>::byte_type
174
+ rvv_type_info<int8_t, rvv_width_m1 * 8>::as_bytes<__rvv_int8m8_t>(__rvv_int8m8_t x) noexcept
175
+ {
176
+ return __riscv_vreinterpret_u8m8(x);
177
+ }
178
+ template <>
179
+ XSIMD_INLINE rvv_type_info<int8_t, rvv_width_m1 * 1>::byte_type
180
+ rvv_type_info<int8_t, rvv_width_m1 * 1>::as_bytes<__rvv_int8m1_t>(__rvv_int8m1_t x) noexcept
181
+ {
182
+ return __riscv_vreinterpret_u8m1(x);
183
+ }
184
+
185
+ template <>
186
+ XSIMD_INLINE rvv_type_info<uint8_t, rvv_width_m1 * 1>::byte_type
187
+ rvv_type_info<uint8_t, rvv_width_m1 * 1>::as_bytes<__rvv_uint8m1_t>(__rvv_uint8m1_t x) noexcept
188
+ {
189
+ return x;
190
+ }
191
+ template <>
192
+ XSIMD_INLINE rvv_type_info<uint16_t, rvv_width_m1 * 1>::byte_type
193
+ rvv_type_info<uint16_t, rvv_width_m1 * 1>::as_bytes<__rvv_uint16m1_t>(__rvv_uint16m1_t x) noexcept
194
+ {
195
+ return __riscv_vreinterpret_u8m1(x);
196
+ }
197
+ template <>
198
+ XSIMD_INLINE rvv_type_info<uint32_t, rvv_width_m1 * 1>::byte_type
199
+ rvv_type_info<uint32_t, rvv_width_m1 * 1>::as_bytes<__rvv_uint32m1_t>(__rvv_uint32m1_t x) noexcept
200
+ {
201
+ return __riscv_vreinterpret_u8m1(x);
202
+ }
203
+ template <>
204
+ XSIMD_INLINE rvv_type_info<uint64_t, rvv_width_m1 * 1>::byte_type
205
+ rvv_type_info<uint64_t, rvv_width_m1 * 1>::as_bytes<__rvv_uint64m1_t>(__rvv_uint64m1_t x) noexcept
206
+ {
207
+ return __riscv_vreinterpret_u8m1(x);
208
+ }
209
+
210
+ // rvv_blob is storage-type abstraction for a vector register.
211
+ template <class T, size_t Width>
212
+ struct rvv_blob : public rvv_type_info<T, Width>
213
+ {
214
+ using super = rvv_type_info<T, Width>;
215
+ using typename super::fixed_type;
216
+ using typename super::type;
217
+
218
+ fixed_type value;
219
+ type get() const { return value; }
220
+ void set(type v) { value = v; }
221
+ };
222
+ //
223
+ // But sometimes we want our storage type to be less than a whole
224
+ // register, while presenting as a whole register to the outside
225
+ // world. This is because some partial-register types are not
226
+ // defined, but they can (mostly) be emulated using shorter vl on a
227
+ // full-width register for arithmetic, and cast back to a partial
228
+ // byte register for storage.
229
+ //
230
+ template <class T, size_t divisor>
231
+ struct rvv_semiblob : public rvv_type_info<T, rvv_width_m1>
232
+ {
233
+ using super = rvv_type_info<T, rvv_width_m1>;
234
+ static constexpr size_t width = rvv_width_m1 / divisor;
235
+ using typename super::type;
236
+ template <size_t div>
237
+ struct semitype;
238
+ template <>
239
+ struct semitype<2>
240
+ {
241
+ using type = vuint8mf2_t __attribute__((riscv_rvv_vector_bits(XSIMD_RVV_WIDTH_MF2)));
242
+ };
243
+ template <>
244
+ struct semitype<4>
245
+ {
246
+ using type = vuint8mf4_t __attribute__((riscv_rvv_vector_bits(XSIMD_RVV_WIDTH_MF4)));
247
+ };
248
+ template <>
249
+ struct semitype<8>
250
+ {
251
+ using type = vuint8mf8_t __attribute__((riscv_rvv_vector_bits(XSIMD_RVV_WIDTH_MF8)));
252
+ };
253
+ using fixed_type = typename semitype<divisor>::type;
254
+ using super::as_bytes;
255
+ using super::bitcast;
256
+
257
+ fixed_type value;
258
+ template <size_t div>
259
+ vuint8m1_t get_bytes() const;
260
+ template <>
261
+ vuint8m1_t get_bytes<2>() const { return __riscv_vlmul_ext_v_u8mf2_u8m1(value); }
262
+ template <>
263
+ vuint8m1_t get_bytes<4>() const { return __riscv_vlmul_ext_v_u8mf4_u8m1(value); }
264
+ template <>
265
+ vuint8m1_t get_bytes<8>() const { return __riscv_vlmul_ext_v_u8mf8_u8m1(value); }
266
+ type get() const noexcept
267
+ {
268
+ vuint8m1_t bytes = get_bytes<divisor>();
269
+ return bitcast(bytes);
270
+ }
271
+ template <size_t div>
272
+ void set_bytes(vuint8m1_t);
273
+ template <>
274
+ void set_bytes<2>(vuint8m1_t v) { value = __riscv_vlmul_trunc_v_u8m1_u8mf2(v); }
275
+ template <>
276
+ void set_bytes<4>(vuint8m1_t v) { value = __riscv_vlmul_trunc_v_u8m1_u8mf4(v); }
277
+ template <>
278
+ void set_bytes<8>(vuint8m1_t v) { value = __riscv_vlmul_trunc_v_u8m1_u8mf8(v); }
279
+ void set(type v)
280
+ {
281
+ vuint8m1_t bytes = as_bytes(v);
282
+ set_bytes<divisor>(bytes);
283
+ }
284
+ };
285
+ template <class T>
286
+ struct rvv_blob<T, rvv_width_mf2> : rvv_semiblob<T, 2>
287
+ {
288
+ };
289
+ template <class T>
290
+ struct rvv_blob<T, rvv_width_mf4> : rvv_semiblob<T, 4>
291
+ {
292
+ };
293
+ template <class T>
294
+ struct rvv_blob<T, rvv_width_mf8> : rvv_semiblob<T, 8>
295
+ {
296
+ };
297
+
298
+ // It's difficult dealing with both char and whichever *int8_t type
299
+ // is compatible with char, so just avoid it altogether.
300
+ //
301
+ using rvv_char_t = typename std::conditional<std::is_signed<char>::value, int8_t, uint8_t>::type;
302
+ template <class T>
303
+ using rvv_fix_char_t = typename std::conditional<
304
+ std::is_same<char, typename std::decay<T>::type>::value,
305
+ rvv_char_t, T>::type;
306
+
307
+ // An explicit constructor isn't really explicit enough to allow
308
+ // implicit bit-casting operations between incompatible types, so
309
+ // we add this vacuous flag argument when we're serious:
310
+ //
311
+ enum rvv_bitcast_flag
312
+ {
313
+ XSIMD_RVV_BITCAST
314
+ };
315
+
316
+ // the general-purpose vector register type, usable within
317
+ // templates, and supporting arithmetic on partial registers for
318
+ // which there is no intrinsic type (by casting via a full register
319
+ // type).
320
+ //
321
+ template <class T, size_t Width>
322
+ struct rvv_reg
323
+ {
324
+ static constexpr size_t width = Width;
325
+ static constexpr size_t vl = Width / (sizeof(T) * 8);
326
+ using blob_type = rvv_blob<T, Width>;
327
+ using register_type = typename blob_type::type;
328
+ using byte_type = typename blob_type::byte_type;
329
+ blob_type value;
330
+ rvv_reg() noexcept = default;
331
+ rvv_reg(register_type x) noexcept { value.set(x); }
332
+ explicit rvv_reg(byte_type v, rvv_bitcast_flag) { value.set(value.bitcast(v)); }
333
+ template <class U>
334
+ explicit rvv_reg(rvv_reg<U, Width> v, rvv_bitcast_flag)
335
+ : rvv_reg(v.get_bytes(), XSIMD_RVV_BITCAST)
336
+ {
337
+ }
338
+ byte_type get_bytes() const noexcept
339
+ {
340
+ return blob_type::as_bytes(value.get());
341
+ }
342
+ operator register_type() const noexcept { return value.get(); }
343
+ };
344
+ template <class T, size_t Width = XSIMD_RVV_BITS>
345
+ using rvv_reg_t = typename std::conditional<!std::is_void<T>::value, rvv_reg<rvv_fix_char_t<T>, Width>, void>::type;
346
+
347
+ // And some more of the same stuff for bool types, which have
348
+ // similar problems and similar workarounds.
349
+ //
350
+ template <size_t>
351
+ struct rvv_bool_info;
352
+ #define XSIMD_RVV_MAKE_BOOL_TYPE(i) \
353
+ template <> \
354
+ struct rvv_bool_info<i> \
355
+ { \
356
+ using type = XSIMD_RVV_JOINT(vbool, i, _t); \
357
+ template <class T> \
358
+ static XSIMD_INLINE type bitcast(T value) noexcept \
359
+ { \
360
+ return XSIMD_RVV_JOINT(__riscv_vreinterpret_b, i, )(value); \
361
+ } \
362
+ /*template <> static XSIMD_INLINE type bitcast(type value) noexcept { return value; }*/ \
363
+ };
364
+ XSIMD_RVV_MAKE_BOOL_TYPE(1);
365
+ XSIMD_RVV_MAKE_BOOL_TYPE(2);
366
+ XSIMD_RVV_MAKE_BOOL_TYPE(4);
367
+ XSIMD_RVV_MAKE_BOOL_TYPE(8);
368
+ XSIMD_RVV_MAKE_BOOL_TYPE(16);
369
+ XSIMD_RVV_MAKE_BOOL_TYPE(32);
370
+ XSIMD_RVV_MAKE_BOOL_TYPE(64);
371
+ #undef XSIMD_RVV_MAKE_BOOL_TYPE
372
+ #undef XSIMD_RVV_JOINT5
373
+ #undef XSIMD_RVV_JOINT
374
+ #undef XSIMD_RVV_JOINT_
375
+
376
+ template <class T, size_t Width>
377
+ struct rvv_bool
378
+ {
379
+ using bool_info = rvv_bool_info<rvv_width_m1 * sizeof(T) * 8 / Width>;
380
+ using storage_type = vuint8m1_t __attribute__((riscv_rvv_vector_bits(XSIMD_RVV_WIDTH_M1)));
381
+ using type = typename bool_info::type;
382
+ storage_type value;
383
+ rvv_bool() = default;
384
+ rvv_bool(type v) noexcept
385
+ : value(__riscv_vreinterpret_u8m1(v))
386
+ {
387
+ }
388
+ template <class U, typename std::enable_if<sizeof(T) == sizeof(U), int>::type = 0>
389
+ rvv_bool(rvv_bool<U, Width> v)
390
+ : value(v.value)
391
+ {
392
+ }
393
+ explicit rvv_bool(uint8_t mask) noexcept
394
+ : value(__riscv_vmv_v_x_u8m1(mask, rvv_width_m1 / 8))
395
+ {
396
+ }
397
+ explicit rvv_bool(uint64_t mask) noexcept
398
+ : value(__riscv_vreinterpret_v_u64m1_u8m1(__riscv_vmv_v_x_u64m1(mask, rvv_width_m1 / 64)))
399
+ {
400
+ }
401
+ operator type() const noexcept { return bool_info::bitcast(value); }
402
+ };
403
+
404
+ template <class T, size_t Width = XSIMD_RVV_BITS>
405
+ using rvv_bool_t = typename std::enable_if < !std::is_void<T>::value,
406
+ rvv_bool<rvv_fix_char_t<T>, Width<rvv_width_m1 ? rvv_width_m1 : Width>>::type;
407
+
408
+ template <size_t S>
409
+ struct rvv_vector_type_impl;
410
+
411
+ template <>
412
+ struct rvv_vector_type_impl<8>
413
+ {
414
+ using signed_type = rvv_reg_t<int8_t>;
415
+ using unsigned_type = rvv_reg_t<uint8_t>;
416
+ using floating_point_type = void;
417
+ };
418
+
419
+ template <>
420
+ struct rvv_vector_type_impl<16>
421
+ {
422
+ using signed_type = rvv_reg_t<int16_t>;
423
+ using unsigned_type = rvv_reg_t<uint16_t>;
424
+ using floating_point_type = rvv_reg_t<_Float16>;
425
+ };
426
+
427
+ template <>
428
+ struct rvv_vector_type_impl<32>
429
+ {
430
+ using signed_type = rvv_reg_t<int32_t>;
431
+ using unsigned_type = rvv_reg_t<uint32_t>;
432
+ using floating_point_type = rvv_reg_t<float>;
433
+ };
434
+
435
+ template <>
436
+ struct rvv_vector_type_impl<64>
437
+ {
438
+ using signed_type = rvv_reg_t<int64_t>;
439
+ using unsigned_type = rvv_reg_t<uint64_t>;
440
+ using floating_point_type = rvv_reg_t<double>;
441
+ };
442
+
443
+ template <class T>
444
+ using signed_int_rvv_vector_type = typename rvv_vector_type_impl<8 * sizeof(T)>::signed_type;
445
+
446
+ template <class T>
447
+ using unsigned_int_rvv_vector_type = typename rvv_vector_type_impl<8 * sizeof(T)>::unsigned_type;
448
+
449
+ template <class T>
450
+ using floating_point_rvv_vector_type = typename rvv_vector_type_impl<8 * sizeof(T)>::floating_point_type;
451
+
452
+ template <class T>
453
+ using signed_int_or_floating_point_rvv_vector_type = typename std::conditional<std::is_floating_point<T>::value,
454
+ floating_point_rvv_vector_type<T>,
455
+ signed_int_rvv_vector_type<T>>::type;
456
+
457
+ template <class T>
458
+ using rvv_vector_type = typename std::conditional<std::is_signed<T>::value,
459
+ signed_int_or_floating_point_rvv_vector_type<T>,
460
+ unsigned_int_rvv_vector_type<T>>::type;
461
+ } // namespace detail
462
+
463
+ XSIMD_DECLARE_SIMD_REGISTER(bool, rvv, detail::rvv_vector_type<unsigned char>);
464
+ XSIMD_DECLARE_SIMD_REGISTER(signed char, rvv, detail::rvv_vector_type<signed char>);
465
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned char, rvv, detail::rvv_vector_type<unsigned char>);
466
+ XSIMD_DECLARE_SIMD_REGISTER(char, rvv, detail::rvv_vector_type<char>);
467
+ XSIMD_DECLARE_SIMD_REGISTER(short, rvv, detail::rvv_vector_type<short>);
468
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned short, rvv, detail::rvv_vector_type<unsigned short>);
469
+ XSIMD_DECLARE_SIMD_REGISTER(int, rvv, detail::rvv_vector_type<int>);
470
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned int, rvv, detail::rvv_vector_type<unsigned int>);
471
+ XSIMD_DECLARE_SIMD_REGISTER(long int, rvv, detail::rvv_vector_type<long int>);
472
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned long int, rvv, detail::rvv_vector_type<unsigned long int>);
473
+ XSIMD_DECLARE_SIMD_REGISTER(long long int, rvv, detail::rvv_vector_type<long long int>);
474
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned long long int, rvv, detail::rvv_vector_type<unsigned long long int>);
475
+ XSIMD_DECLARE_SIMD_REGISTER(float, rvv, detail::rvv_vector_type<float>);
476
+ XSIMD_DECLARE_SIMD_REGISTER(double, rvv, detail::rvv_vector_type<double>);
477
+
478
+ namespace detail
479
+ {
480
+ template <class T>
481
+ struct rvv_bool_simd_register
482
+ {
483
+ using register_type = rvv_bool_t<T>;
484
+ register_type data;
485
+ operator register_type() const noexcept { return data; }
486
+ };
487
+ } // namespace detail
488
+
489
+ template <class T>
490
+ struct get_bool_simd_register<T, rvv>
491
+ {
492
+ using type = detail::rvv_bool_simd_register<T>;
493
+ };
494
+ } // namespace types
495
+
496
+ #undef XSIMD_RVV_WIDTH_MF8
497
+ #undef XSIMD_RVV_WIDTH_MF4
498
+ #undef XSIMD_RVV_WIDTH_MF2
499
+ #undef XSIMD_RVV_WIDTH_M1
500
+
501
+ #else
502
+ using rvv = detail::rvv<0xFFFFFFFF>;
503
+ #endif
504
+ } // namespace xsimd
505
+
506
+ #endif
@@ -0,0 +1,59 @@
1
+ /***************************************************************************
2
+ * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3
+ * Martin Renou *
4
+ * Copyright (c) QuantStack *
5
+ * Copyright (c) Serge Guelton *
6
+ * *
7
+ * Distributed under the terms of the BSD 3-Clause License. *
8
+ * *
9
+ * The full license is in the file LICENSE, distributed with this software. *
10
+ ****************************************************************************/
11
+
12
+ #ifndef XSIMD_SSE2_REGISTER_HPP
13
+ #define XSIMD_SSE2_REGISTER_HPP
14
+
15
+ #include "./xsimd_common_arch.hpp"
16
+ #include "./xsimd_register.hpp"
17
+
18
+ #if XSIMD_WITH_SSE2
19
+ #include <emmintrin.h>
20
+ #include <xmmintrin.h>
21
+ #endif
22
+
23
+ namespace xsimd
24
+ {
25
+ /**
26
+ * @ingroup architectures
27
+ *
28
+ * SSE2 instructions
29
+ */
30
+ struct sse2 : common
31
+ {
32
+ static constexpr bool supported() noexcept { return XSIMD_WITH_SSE2; }
33
+ static constexpr bool available() noexcept { return true; }
34
+ static constexpr bool requires_alignment() noexcept { return true; }
35
+ static constexpr std::size_t alignment() noexcept { return 16; }
36
+ static constexpr char const* name() noexcept { return "sse2"; }
37
+ };
38
+
39
+ #if XSIMD_WITH_SSE2
40
+ namespace types
41
+ {
42
+ XSIMD_DECLARE_SIMD_REGISTER(signed char, sse2, __m128i);
43
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned char, sse2, __m128i);
44
+ XSIMD_DECLARE_SIMD_REGISTER(char, sse2, __m128i);
45
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned short, sse2, __m128i);
46
+ XSIMD_DECLARE_SIMD_REGISTER(short, sse2, __m128i);
47
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned int, sse2, __m128i);
48
+ XSIMD_DECLARE_SIMD_REGISTER(int, sse2, __m128i);
49
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned long int, sse2, __m128i);
50
+ XSIMD_DECLARE_SIMD_REGISTER(long int, sse2, __m128i);
51
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned long long int, sse2, __m128i);
52
+ XSIMD_DECLARE_SIMD_REGISTER(long long int, sse2, __m128i);
53
+ XSIMD_DECLARE_SIMD_REGISTER(float, sse2, __m128);
54
+ XSIMD_DECLARE_SIMD_REGISTER(double, sse2, __m128d);
55
+ }
56
+ #endif
57
+ }
58
+
59
+ #endif
@@ -0,0 +1,49 @@
1
+ /***************************************************************************
2
+ * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3
+ * Martin Renou *
4
+ * Copyright (c) QuantStack *
5
+ * Copyright (c) Serge Guelton *
6
+ * *
7
+ * Distributed under the terms of the BSD 3-Clause License. *
8
+ * *
9
+ * The full license is in the file LICENSE, distributed with this software. *
10
+ ****************************************************************************/
11
+
12
+ #ifndef XSIMD_SSE3_REGISTER_HPP
13
+ #define XSIMD_SSE3_REGISTER_HPP
14
+
15
+ #include "./xsimd_sse2_register.hpp"
16
+
17
+ #if XSIMD_WITH_SSE3
18
+ #include <pmmintrin.h>
19
+ #endif
20
+
21
+ namespace xsimd
22
+ {
23
+ /**
24
+ * @ingroup architectures
25
+ *
26
+ * SSE3 instructions
27
+ */
28
+ struct sse3 : sse2
29
+ {
30
+ static constexpr bool supported() noexcept { return XSIMD_WITH_SSE3; }
31
+ static constexpr bool available() noexcept { return true; }
32
+ static constexpr char const* name() noexcept { return "sse3"; }
33
+ };
34
+
35
+ #if XSIMD_WITH_SSE3
36
+
37
+ #if !XSIMD_WITH_SSE2
38
+ #error "architecture inconsistency: sse3 requires sse2"
39
+ #endif
40
+
41
+ namespace types
42
+ {
43
+
44
+ XSIMD_DECLARE_SIMD_REGISTER_ALIAS(sse3, sse2);
45
+ }
46
+ #endif
47
+ }
48
+
49
+ #endif
@@ -0,0 +1,48 @@
1
+ /***************************************************************************
2
+ * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3
+ * Martin Renou *
4
+ * Copyright (c) QuantStack *
5
+ * Copyright (c) Serge Guelton *
6
+ * *
7
+ * Distributed under the terms of the BSD 3-Clause License. *
8
+ * *
9
+ * The full license is in the file LICENSE, distributed with this software. *
10
+ ****************************************************************************/
11
+
12
+ #ifndef XSIMD_SSE4_1_REGISTER_HPP
13
+ #define XSIMD_SSE4_1_REGISTER_HPP
14
+
15
+ #include "./xsimd_ssse3_register.hpp"
16
+
17
+ #if XSIMD_WITH_SSE4_1
18
+ #include <smmintrin.h>
19
+ #endif
20
+
21
+ namespace xsimd
22
+ {
23
+ /**
24
+ * @ingroup architectures
25
+ *
26
+ * SSE4.1 instructions
27
+ */
28
+ struct sse4_1 : ssse3
29
+ {
30
+ static constexpr bool supported() noexcept { return XSIMD_WITH_SSE4_1; }
31
+ static constexpr bool available() noexcept { return true; }
32
+ static constexpr char const* name() noexcept { return "sse4.1"; }
33
+ };
34
+
35
+ #if XSIMD_WITH_SSE4_1
36
+
37
+ #if !XSIMD_WITH_SSSE3
38
+ #error "architecture inconsistency: sse4.1 requires ssse3"
39
+ #endif
40
+
41
+ namespace types
42
+ {
43
+ XSIMD_DECLARE_SIMD_REGISTER_ALIAS(sse4_1, ssse3);
44
+ }
45
+ #endif
46
+ }
47
+
48
+ #endif