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,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_2_REGISTER_HPP
13
+ #define XSIMD_SSE4_2_REGISTER_HPP
14
+
15
+ #include "./xsimd_sse4_1_register.hpp"
16
+
17
+ #if XSIMD_WITH_SSE4_2
18
+ #include <nmmintrin.h>
19
+ #endif
20
+
21
+ namespace xsimd
22
+ {
23
+ /**
24
+ * @ingroup architectures
25
+ *
26
+ * SSE4.2 instructions
27
+ */
28
+ struct sse4_2 : sse4_1
29
+ {
30
+ static constexpr bool supported() noexcept { return XSIMD_WITH_SSE4_2; }
31
+ static constexpr bool available() noexcept { return true; }
32
+ static constexpr char const* name() noexcept { return "sse4.2"; }
33
+ };
34
+
35
+ #if XSIMD_WITH_SSE4_2
36
+
37
+ #if !XSIMD_WITH_SSE4_1
38
+ #error "architecture inconsistency: sse4.2 requires sse4.1"
39
+ #endif
40
+
41
+ namespace types
42
+ {
43
+ XSIMD_DECLARE_SIMD_REGISTER_ALIAS(sse4_2, sse4_1);
44
+ }
45
+ #endif
46
+ }
47
+
48
+ #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_SSSE3_REGISTER_HPP
13
+ #define XSIMD_SSSE3_REGISTER_HPP
14
+
15
+ #include "./xsimd_sse3_register.hpp"
16
+
17
+ #if XSIMD_WITH_SSSE3
18
+ #include <tmmintrin.h>
19
+ #endif
20
+
21
+ namespace xsimd
22
+ {
23
+ /**
24
+ * @ingroup architectures
25
+ *
26
+ * SSSE3 instructions
27
+ */
28
+ struct ssse3 : sse3
29
+ {
30
+ static constexpr bool supported() noexcept { return XSIMD_WITH_SSSE3; }
31
+ static constexpr bool available() noexcept { return true; }
32
+ static constexpr char const* name() noexcept { return "ssse3"; }
33
+ };
34
+
35
+ #if XSIMD_WITH_SSSE3
36
+
37
+ #if !XSIMD_WITH_SSE3
38
+ #error "architecture inconsistency: ssse3 requires sse3"
39
+ #endif
40
+
41
+ namespace types
42
+ {
43
+ XSIMD_DECLARE_SIMD_REGISTER_ALIAS(ssse3, sse3);
44
+ }
45
+ #endif
46
+ }
47
+
48
+ #endif
@@ -0,0 +1,156 @@
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_SVE_REGISTER_HPP
14
+ #define XSIMD_SVE_REGISTER_HPP
15
+
16
+ #include "xsimd_common_arch.hpp"
17
+ #include "xsimd_register.hpp"
18
+
19
+ #if XSIMD_WITH_SVE
20
+ #include <arm_sve.h>
21
+ #endif
22
+
23
+ namespace xsimd
24
+ {
25
+ namespace detail
26
+ {
27
+ /**
28
+ * @ingroup architectures
29
+ *
30
+ * SVE instructions (fixed vector size) for arm64
31
+ */
32
+ template <size_t Width>
33
+ struct sve : xsimd::common
34
+ {
35
+ static constexpr bool supported() noexcept { return Width == XSIMD_SVE_BITS; }
36
+ static constexpr bool available() noexcept { return true; }
37
+ static constexpr bool requires_alignment() noexcept { return true; }
38
+ static constexpr std::size_t alignment() noexcept { return 16; }
39
+ static constexpr char const* name() noexcept { return "arm64+sve"; }
40
+ };
41
+ }
42
+
43
+ #if XSIMD_WITH_SVE
44
+
45
+ using sve = detail::sve<__ARM_FEATURE_SVE_BITS>;
46
+
47
+ namespace types
48
+ {
49
+ namespace detail
50
+ {
51
+ // define fixed size alias per SVE sizeless type
52
+ #define SVE_TO_FIXED_SIZE(ty) ty __attribute__((arm_sve_vector_bits(__ARM_FEATURE_SVE_BITS)))
53
+ using sve_int8_t = SVE_TO_FIXED_SIZE(svint8_t);
54
+ using sve_uint8_t = SVE_TO_FIXED_SIZE(svuint8_t);
55
+ using sve_int16_t = SVE_TO_FIXED_SIZE(svint16_t);
56
+ using sve_uint16_t = SVE_TO_FIXED_SIZE(svuint16_t);
57
+ using sve_int32_t = SVE_TO_FIXED_SIZE(svint32_t);
58
+ using sve_uint32_t = SVE_TO_FIXED_SIZE(svuint32_t);
59
+ using sve_int64_t = SVE_TO_FIXED_SIZE(svint64_t);
60
+ using sve_uint64_t = SVE_TO_FIXED_SIZE(svuint64_t);
61
+ using sve_float32_t = SVE_TO_FIXED_SIZE(svfloat32_t);
62
+ using sve_float64_t = SVE_TO_FIXED_SIZE(svfloat64_t);
63
+ using sve_bool_t = SVE_TO_FIXED_SIZE(svbool_t);
64
+ #undef SVE_TO_FIXED_SIZE
65
+
66
+ template <size_t S>
67
+ struct sve_vector_type_impl;
68
+
69
+ template <>
70
+ struct sve_vector_type_impl<8>
71
+ {
72
+ using signed_type = sve_int8_t;
73
+ using unsigned_type = sve_uint8_t;
74
+ using floating_point_type = void;
75
+ };
76
+
77
+ template <>
78
+ struct sve_vector_type_impl<16>
79
+ {
80
+ using signed_type = sve_int16_t;
81
+ using unsigned_type = sve_uint16_t;
82
+ using floating_point_type = void;
83
+ };
84
+
85
+ template <>
86
+ struct sve_vector_type_impl<32>
87
+ {
88
+ using signed_type = sve_int32_t;
89
+ using unsigned_type = sve_uint32_t;
90
+ using floating_point_type = sve_float32_t;
91
+ };
92
+
93
+ template <>
94
+ struct sve_vector_type_impl<64>
95
+ {
96
+ using signed_type = sve_int64_t;
97
+ using unsigned_type = sve_uint64_t;
98
+ using floating_point_type = sve_float64_t;
99
+ };
100
+
101
+ template <class T>
102
+ using signed_int_sve_vector_type = typename sve_vector_type_impl<8 * sizeof(T)>::signed_type;
103
+
104
+ template <class T>
105
+ using unsigned_int_sve_vector_type = typename sve_vector_type_impl<8 * sizeof(T)>::unsigned_type;
106
+
107
+ template <class T>
108
+ using floating_point_sve_vector_type = typename sve_vector_type_impl<8 * sizeof(T)>::floating_point_type;
109
+
110
+ template <class T>
111
+ using signed_int_or_floating_point_sve_vector_type = typename std::conditional<std::is_floating_point<T>::value,
112
+ floating_point_sve_vector_type<T>,
113
+ signed_int_sve_vector_type<T>>::type;
114
+
115
+ template <class T>
116
+ using sve_vector_type = typename std::conditional<std::is_signed<T>::value,
117
+ signed_int_or_floating_point_sve_vector_type<T>,
118
+ unsigned_int_sve_vector_type<T>>::type;
119
+ } // namespace detail
120
+
121
+ XSIMD_DECLARE_SIMD_REGISTER(signed char, sve, detail::sve_vector_type<signed char>);
122
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned char, sve, detail::sve_vector_type<unsigned char>);
123
+ XSIMD_DECLARE_SIMD_REGISTER(char, sve, detail::sve_vector_type<char>);
124
+ XSIMD_DECLARE_SIMD_REGISTER(short, sve, detail::sve_vector_type<short>);
125
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned short, sve, detail::sve_vector_type<unsigned short>);
126
+ XSIMD_DECLARE_SIMD_REGISTER(int, sve, detail::sve_vector_type<int>);
127
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned int, sve, detail::sve_vector_type<unsigned int>);
128
+ XSIMD_DECLARE_SIMD_REGISTER(long int, sve, detail::sve_vector_type<long int>);
129
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned long int, sve, detail::sve_vector_type<unsigned long int>);
130
+ XSIMD_DECLARE_SIMD_REGISTER(long long int, sve, detail::sve_vector_type<long long int>);
131
+ XSIMD_DECLARE_SIMD_REGISTER(unsigned long long int, sve, detail::sve_vector_type<unsigned long long int>);
132
+ XSIMD_DECLARE_SIMD_REGISTER(float, sve, detail::sve_vector_type<float>);
133
+ XSIMD_DECLARE_SIMD_REGISTER(double, sve, detail::sve_vector_type<double>);
134
+
135
+ namespace detail
136
+ {
137
+ struct sve_bool_simd_register
138
+ {
139
+ using register_type = sve_bool_t;
140
+ register_type data;
141
+ operator register_type() const noexcept { return data; }
142
+ };
143
+ } // namespace detail
144
+
145
+ template <class T>
146
+ struct get_bool_simd_register<T, sve>
147
+ {
148
+ using type = detail::sve_bool_simd_register;
149
+ };
150
+ } // namespace types
151
+ #else
152
+ using sve = detail::sve<0xFFFFFFFF>;
153
+ #endif
154
+ } // namespace xsimd
155
+
156
+ #endif
@@ -0,0 +1,337 @@
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_TRAITS_HPP
13
+ #define XSIMD_TRAITS_HPP
14
+
15
+ #include <type_traits>
16
+
17
+ #include "xsimd_batch.hpp"
18
+
19
+ /**
20
+ * high level type traits
21
+ *
22
+ * @defgroup batch_traits Type traits
23
+ *
24
+ **/
25
+
26
+ namespace xsimd
27
+ {
28
+
29
+ /**************************************
30
+ * simd_traits and revert_simd_traits *
31
+ **************************************/
32
+
33
+ template <class T, class A = default_arch>
34
+ struct has_simd_register : types::has_simd_register<T, A>
35
+ {
36
+ };
37
+
38
+ template <class T, class A>
39
+ struct has_simd_register<std::complex<T>, A> : has_simd_register<T, A>
40
+ {
41
+ };
42
+
43
+ namespace detail
44
+ {
45
+ template <class T, bool>
46
+ struct simd_traits_impl;
47
+
48
+ template <class T>
49
+ struct simd_traits_impl<T, false>
50
+ {
51
+ using type = T;
52
+ using bool_type = bool;
53
+ static constexpr size_t size = 1;
54
+ };
55
+
56
+ #if __cplusplus < 201703L
57
+ template <class T>
58
+ constexpr size_t simd_traits_impl<T, false>::size;
59
+ #endif
60
+
61
+ template <class T>
62
+ struct simd_traits_impl<T, true>
63
+ {
64
+ using type = batch<T>;
65
+ using bool_type = typename type::batch_bool_type;
66
+ static constexpr size_t size = type::size;
67
+ };
68
+
69
+ #if __cplusplus < 201703L
70
+ template <class T>
71
+ constexpr size_t simd_traits_impl<T, true>::size;
72
+ #endif
73
+
74
+ template <class T, class A>
75
+ struct static_check_supported_config_emitter
76
+ {
77
+
78
+ static_assert(A::supported(),
79
+ "usage of batch type with unsupported architecture");
80
+ static_assert(!A::supported() || xsimd::has_simd_register<T, A>::value,
81
+ "usage of batch type with unsupported type");
82
+ };
83
+
84
+ template <class A>
85
+ struct static_check_supported_config_emitter<bool, A> : static_check_supported_config_emitter<xsimd::as_unsigned_integer_t<bool>, A>
86
+ {
87
+ };
88
+
89
+ template <class T, class A>
90
+ struct static_check_supported_config_emitter<std::complex<T>, A> : static_check_supported_config_emitter<T, A>
91
+ {
92
+ };
93
+
94
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
95
+ template <class T, class A, bool i3ec>
96
+ struct static_check_supported_config_emitter<xtl::xcomplex<T, T, i3ec>, A> : static_check_supported_config_emitter<T, A>
97
+ {
98
+ };
99
+ #endif
100
+
101
+ // consistency checker
102
+ template <class T, class A>
103
+ XSIMD_INLINE void static_check_supported_config()
104
+ {
105
+ (void)static_check_supported_config_emitter<T, A>();
106
+ }
107
+ }
108
+
109
+ template <class T>
110
+ struct simd_traits : detail::simd_traits_impl<T, xsimd::has_simd_register<T>::value>
111
+ {
112
+ };
113
+
114
+ template <class T>
115
+ struct simd_traits<std::complex<T>>
116
+ : detail::simd_traits_impl<std::complex<T>, xsimd::has_simd_register<T>::value>
117
+ {
118
+ };
119
+
120
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
121
+ template <class T, bool i3ec>
122
+ struct simd_traits<xtl::xcomplex<T, T, i3ec>>
123
+ : detail::simd_traits_impl<std::complex<T>, xsimd::has_simd_register<T>::value>
124
+ {
125
+ };
126
+ #endif
127
+
128
+ template <class T>
129
+ struct revert_simd_traits
130
+ {
131
+ using type = T;
132
+ static constexpr size_t size = simd_traits<type>::size;
133
+ };
134
+
135
+ #if __cplusplus < 201703L
136
+ template <class T>
137
+ constexpr size_t revert_simd_traits<T>::size;
138
+ #endif
139
+
140
+ template <class T>
141
+ struct revert_simd_traits<batch<T>>
142
+ {
143
+ using type = T;
144
+ static constexpr size_t size = batch<T>::size;
145
+ };
146
+
147
+ #if __cplusplus < 201703L
148
+ template <class T>
149
+ constexpr size_t revert_simd_traits<batch<T>>::size;
150
+ #endif
151
+
152
+ template <class T>
153
+ using simd_type = typename simd_traits<T>::type;
154
+
155
+ template <class T>
156
+ using simd_bool_type = typename simd_traits<T>::bool_type;
157
+
158
+ template <class T>
159
+ using revert_simd_type = typename revert_simd_traits<T>::type;
160
+
161
+ /********************
162
+ * simd_return_type *
163
+ ********************/
164
+
165
+ namespace detail
166
+ {
167
+ template <class T1, class T2>
168
+ struct simd_condition
169
+ {
170
+ static constexpr bool value = (std::is_same<T1, T2>::value && !std::is_same<T1, bool>::value) || (std::is_same<T1, bool>::value && !std::is_same<T2, bool>::value) || std::is_same<T1, float>::value || std::is_same<T1, double>::value || std::is_same<T1, int8_t>::value || std::is_same<T1, uint8_t>::value || std::is_same<T1, int16_t>::value || std::is_same<T1, uint16_t>::value || std::is_same<T1, int32_t>::value || std::is_same<T1, uint32_t>::value || std::is_same<T1, int64_t>::value || std::is_same<T1, uint64_t>::value || std::is_same<T1, char>::value || detail::is_complex<T1>::value;
171
+ };
172
+
173
+ template <class T1, class T2, class A>
174
+ struct simd_return_type_impl
175
+ : std::enable_if<simd_condition<T1, T2>::value, batch<T2, A>>
176
+ {
177
+ };
178
+
179
+ template <class T2, class A>
180
+ struct simd_return_type_impl<bool, T2, A>
181
+ : std::enable_if<simd_condition<bool, T2>::value, batch_bool<T2, A>>
182
+ {
183
+ };
184
+
185
+ template <class T2, class A>
186
+ struct simd_return_type_impl<bool, std::complex<T2>, A>
187
+ : std::enable_if<simd_condition<bool, T2>::value, batch_bool<T2, A>>
188
+ {
189
+ };
190
+
191
+ template <class T1, class T2, class A>
192
+ struct simd_return_type_impl<std::complex<T1>, T2, A>
193
+ : std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
194
+ {
195
+ };
196
+
197
+ template <class T1, class T2, class A>
198
+ struct simd_return_type_impl<std::complex<T1>, std::complex<T2>, A>
199
+ : std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
200
+ {
201
+ };
202
+
203
+ #ifdef XSIMD_ENABLE_XTL_COMPLEX
204
+ template <class T1, class T2, bool I3EC, class A>
205
+ struct simd_return_type_impl<xtl::xcomplex<T1, T1, I3EC>, T2, A>
206
+ : std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
207
+ {
208
+ };
209
+
210
+ template <class T1, class T2, bool I3EC, class A>
211
+ struct simd_return_type_impl<xtl::xcomplex<T1, T1, I3EC>, std::complex<T2>, A>
212
+ : std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
213
+ {
214
+ };
215
+
216
+ template <class T1, class T2, bool I3EC, class A>
217
+ struct simd_return_type_impl<xtl::xcomplex<T1, T1, I3EC>, xtl::xcomplex<T2, T2, I3EC>, A>
218
+ : std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
219
+ {
220
+ };
221
+
222
+ template <class T1, class T2, bool I3EC, class A>
223
+ struct simd_return_type_impl<std::complex<T1>, xtl::xcomplex<T2, T2, I3EC>, A>
224
+ : std::enable_if<simd_condition<T1, T2>::value, batch<std::complex<T2>, A>>
225
+ {
226
+ };
227
+ #endif
228
+ }
229
+
230
+ template <class T1, class T2, class A = default_arch>
231
+ using simd_return_type = typename detail::simd_return_type_impl<T1, T2, A>::type;
232
+
233
+ /**
234
+ * @ingroup batch_traits
235
+ *
236
+ * type traits that inherits from @c std::true_type for @c batch<...> types and from
237
+ * @c std::false_type otherwise.
238
+ *
239
+ * @tparam T type to analyze.
240
+ */
241
+ template <class T>
242
+ struct is_batch;
243
+
244
+ template <class T>
245
+ struct is_batch : std::false_type
246
+ {
247
+ };
248
+
249
+ template <class T, class A>
250
+ struct is_batch<batch<T, A>> : std::true_type
251
+ {
252
+ };
253
+
254
+ /**
255
+ * @ingroup batch_traits
256
+ *
257
+ * type traits that inherits from @c std::true_type for @c batch_bool<...> types and from
258
+ * @c std::false_type otherwise.
259
+ *
260
+ * @tparam T type to analyze.
261
+ */
262
+
263
+ template <class T>
264
+ struct is_batch_bool : std::false_type
265
+ {
266
+ };
267
+
268
+ template <class T, class A>
269
+ struct is_batch_bool<batch_bool<T, A>> : std::true_type
270
+ {
271
+ };
272
+
273
+ /**
274
+ * @ingroup batch_traits
275
+ *
276
+ * type traits that inherits from @c std::true_type for @c batch<std::complex<...>>
277
+ * types and from @c std::false_type otherwise.
278
+ *
279
+ * @tparam T type to analyze.
280
+ */
281
+
282
+ template <class T>
283
+ struct is_batch_complex : std::false_type
284
+ {
285
+ };
286
+
287
+ template <class T, class A>
288
+ struct is_batch_complex<batch<std::complex<T>, A>> : std::true_type
289
+ {
290
+ };
291
+
292
+ /**
293
+ * @ingroup batch_traits
294
+ *
295
+ * type traits whose @c type field is set to @c T::value_type if @c
296
+ * is_batch<T>::value and to @c T otherwise.
297
+ *
298
+ * @tparam T type to analyze.
299
+ */
300
+ template <class T>
301
+ struct scalar_type
302
+ {
303
+ using type = T;
304
+ };
305
+ template <class T, class A>
306
+ struct scalar_type<batch<T, A>>
307
+ {
308
+ using type = T;
309
+ };
310
+
311
+ template <class T>
312
+ using scalar_type_t = typename scalar_type<T>::type;
313
+
314
+ /**
315
+ * @ingroup batch_traits
316
+ *
317
+ * type traits whose @c type field is set to @c T::value_type if @c
318
+ * is_batch_bool<T>::value and to @c bool otherwise.
319
+ *
320
+ * @tparam T type to analyze.
321
+ */
322
+ template <class T>
323
+ struct mask_type
324
+ {
325
+ using type = bool;
326
+ };
327
+ template <class T, class A>
328
+ struct mask_type<batch<T, A>>
329
+ {
330
+ using type = typename batch<T, A>::batch_bool_type;
331
+ };
332
+
333
+ template <class T>
334
+ using mask_type_t = typename mask_type<T>::type;
335
+ }
336
+
337
+ #endif