sequenzo 0.1.21__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 (260) hide show
  1. sequenzo/__init__.py +240 -0
  2. sequenzo/big_data/__init__.py +12 -0
  3. sequenzo/big_data/clara/__init__.py +26 -0
  4. sequenzo/big_data/clara/clara.py +467 -0
  5. sequenzo/big_data/clara/utils/__init__.py +27 -0
  6. sequenzo/big_data/clara/utils/aggregatecases.py +92 -0
  7. sequenzo/big_data/clara/utils/davies_bouldin.py +91 -0
  8. sequenzo/big_data/clara/utils/get_weighted_diss.cpython-311-darwin.so +0 -0
  9. sequenzo/big_data/clara/utils/wfcmdd.py +205 -0
  10. sequenzo/big_data/clara/visualization.py +88 -0
  11. sequenzo/clustering/KMedoids.py +196 -0
  12. sequenzo/clustering/__init__.py +30 -0
  13. sequenzo/clustering/clustering_c_code.cpython-311-darwin.so +0 -0
  14. sequenzo/clustering/hierarchical_clustering.py +1380 -0
  15. sequenzo/clustering/src/KMedoid.cpp +262 -0
  16. sequenzo/clustering/src/PAM.cpp +236 -0
  17. sequenzo/clustering/src/PAMonce.cpp +234 -0
  18. sequenzo/clustering/src/cluster_quality.cpp +496 -0
  19. sequenzo/clustering/src/cluster_quality.h +128 -0
  20. sequenzo/clustering/src/cluster_quality_backup.cpp +570 -0
  21. sequenzo/clustering/src/module.cpp +228 -0
  22. sequenzo/clustering/src/weightedinertia.cpp +111 -0
  23. sequenzo/clustering/utils/__init__.py +27 -0
  24. sequenzo/clustering/utils/disscenter.py +122 -0
  25. sequenzo/data_preprocessing/__init__.py +20 -0
  26. sequenzo/data_preprocessing/helpers.py +256 -0
  27. sequenzo/datasets/__init__.py +41 -0
  28. sequenzo/datasets/biofam.csv +2001 -0
  29. sequenzo/datasets/biofam_child_domain.csv +2001 -0
  30. sequenzo/datasets/biofam_left_domain.csv +2001 -0
  31. sequenzo/datasets/biofam_married_domain.csv +2001 -0
  32. sequenzo/datasets/chinese_colonial_territories.csv +12 -0
  33. sequenzo/datasets/country_co2_emissions.csv +194 -0
  34. sequenzo/datasets/country_co2_emissions_global_deciles.csv +195 -0
  35. sequenzo/datasets/country_co2_emissions_global_quintiles.csv +195 -0
  36. sequenzo/datasets/country_co2_emissions_local_deciles.csv +195 -0
  37. sequenzo/datasets/country_co2_emissions_local_quintiles.csv +195 -0
  38. sequenzo/datasets/country_gdp_per_capita.csv +194 -0
  39. sequenzo/datasets/mvad.csv +713 -0
  40. sequenzo/datasets/pairfam_family.csv +1867 -0
  41. sequenzo/datasets/polyadic_samplec1.csv +61 -0
  42. sequenzo/datasets/polyadic_samplep1.csv +61 -0
  43. sequenzo/datasets/polyadic_seqc1.csv +61 -0
  44. sequenzo/datasets/polyadic_seqp1.csv +61 -0
  45. sequenzo/define_sequence_data.py +609 -0
  46. sequenzo/dissimilarity_measures/__init__.py +31 -0
  47. sequenzo/dissimilarity_measures/c_code.cpython-311-darwin.so +0 -0
  48. sequenzo/dissimilarity_measures/get_distance_matrix.py +702 -0
  49. sequenzo/dissimilarity_measures/get_substitution_cost_matrix.py +241 -0
  50. sequenzo/dissimilarity_measures/src/DHDdistance.cpp +148 -0
  51. sequenzo/dissimilarity_measures/src/LCPdistance.cpp +114 -0
  52. sequenzo/dissimilarity_measures/src/OMdistance.cpp +247 -0
  53. sequenzo/dissimilarity_measures/src/OMspellDistance.cpp +281 -0
  54. sequenzo/dissimilarity_measures/src/__init__.py +0 -0
  55. sequenzo/dissimilarity_measures/src/dist2matrix.cpp +63 -0
  56. sequenzo/dissimilarity_measures/src/dp_utils.h +160 -0
  57. sequenzo/dissimilarity_measures/src/module.cpp +34 -0
  58. sequenzo/dissimilarity_measures/src/setup.py +30 -0
  59. sequenzo/dissimilarity_measures/src/utils.h +25 -0
  60. sequenzo/dissimilarity_measures/src/xsimd/.github/cmake-test/main.cpp +6 -0
  61. sequenzo/dissimilarity_measures/src/xsimd/benchmark/main.cpp +159 -0
  62. sequenzo/dissimilarity_measures/src/xsimd/benchmark/xsimd_benchmark.hpp +565 -0
  63. sequenzo/dissimilarity_measures/src/xsimd/docs/source/conf.py +37 -0
  64. sequenzo/dissimilarity_measures/src/xsimd/examples/mandelbrot.cpp +330 -0
  65. sequenzo/dissimilarity_measures/src/xsimd/examples/pico_bench.hpp +246 -0
  66. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_arithmetic.hpp +266 -0
  67. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_complex.hpp +112 -0
  68. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_details.hpp +323 -0
  69. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_logical.hpp +218 -0
  70. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_math.hpp +2583 -0
  71. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_memory.hpp +880 -0
  72. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_rounding.hpp +72 -0
  73. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_swizzle.hpp +174 -0
  74. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/common/xsimd_common_trigo.hpp +978 -0
  75. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx.hpp +1924 -0
  76. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx2.hpp +1144 -0
  77. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512bw.hpp +656 -0
  78. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512cd.hpp +28 -0
  79. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512dq.hpp +244 -0
  80. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512er.hpp +20 -0
  81. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512f.hpp +2650 -0
  82. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512ifma.hpp +20 -0
  83. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512pf.hpp +20 -0
  84. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi.hpp +77 -0
  85. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vbmi2.hpp +131 -0
  86. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512bw.hpp +20 -0
  87. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp +20 -0
  88. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_avxvnni.hpp +20 -0
  89. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common.hpp +24 -0
  90. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_common_fwd.hpp +77 -0
  91. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_constants.hpp +393 -0
  92. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_emulated.hpp +788 -0
  93. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx.hpp +93 -0
  94. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_avx2.hpp +46 -0
  95. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma3_sse.hpp +97 -0
  96. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_fma4.hpp +92 -0
  97. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_i8mm_neon64.hpp +17 -0
  98. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_isa.hpp +142 -0
  99. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon.hpp +3142 -0
  100. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_neon64.hpp +1543 -0
  101. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_rvv.hpp +1513 -0
  102. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_scalar.hpp +1260 -0
  103. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse2.hpp +2024 -0
  104. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse3.hpp +67 -0
  105. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_1.hpp +339 -0
  106. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sse4_2.hpp +44 -0
  107. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_ssse3.hpp +186 -0
  108. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_sve.hpp +1155 -0
  109. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_vsx.hpp +892 -0
  110. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/arch/xsimd_wasm.hpp +1780 -0
  111. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_arch.hpp +240 -0
  112. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_config.hpp +484 -0
  113. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_cpuid.hpp +269 -0
  114. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/config/xsimd_inline.hpp +27 -0
  115. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/math/xsimd_rem_pio2.hpp +719 -0
  116. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_aligned_allocator.hpp +349 -0
  117. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/memory/xsimd_alignment.hpp +91 -0
  118. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_all_registers.hpp +55 -0
  119. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_api.hpp +2765 -0
  120. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx2_register.hpp +44 -0
  121. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512bw_register.hpp +51 -0
  122. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512cd_register.hpp +51 -0
  123. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512dq_register.hpp +51 -0
  124. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512er_register.hpp +51 -0
  125. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512f_register.hpp +77 -0
  126. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512ifma_register.hpp +51 -0
  127. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512pf_register.hpp +51 -0
  128. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi2_register.hpp +51 -0
  129. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vbmi_register.hpp +51 -0
  130. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512bw_register.hpp +54 -0
  131. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp +53 -0
  132. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avx_register.hpp +64 -0
  133. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_avxvnni_register.hpp +44 -0
  134. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch.hpp +1524 -0
  135. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_batch_constant.hpp +300 -0
  136. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_common_arch.hpp +47 -0
  137. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_emulated_register.hpp +80 -0
  138. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx2_register.hpp +50 -0
  139. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_avx_register.hpp +50 -0
  140. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma3_sse_register.hpp +50 -0
  141. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_fma4_register.hpp +50 -0
  142. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_i8mm_neon64_register.hpp +55 -0
  143. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon64_register.hpp +55 -0
  144. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_neon_register.hpp +154 -0
  145. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_register.hpp +94 -0
  146. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_rvv_register.hpp +506 -0
  147. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse2_register.hpp +59 -0
  148. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse3_register.hpp +49 -0
  149. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_1_register.hpp +48 -0
  150. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sse4_2_register.hpp +48 -0
  151. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_ssse3_register.hpp +48 -0
  152. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_sve_register.hpp +156 -0
  153. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_traits.hpp +337 -0
  154. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_utils.hpp +536 -0
  155. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_vsx_register.hpp +77 -0
  156. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/types/xsimd_wasm_register.hpp +59 -0
  157. sequenzo/dissimilarity_measures/src/xsimd/include/xsimd/xsimd.hpp +75 -0
  158. sequenzo/dissimilarity_measures/src/xsimd/test/architectures/dummy.cpp +7 -0
  159. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set.cpp +13 -0
  160. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean.cpp +24 -0
  161. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_aligned.cpp +25 -0
  162. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_arch_independent.cpp +28 -0
  163. sequenzo/dissimilarity_measures/src/xsimd/test/doc/explicit_use_of_an_instruction_set_mean_tag_dispatch.cpp +25 -0
  164. sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_abstract_batches.cpp +7 -0
  165. sequenzo/dissimilarity_measures/src/xsimd/test/doc/manipulating_parametric_batches.cpp +8 -0
  166. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum.hpp +31 -0
  167. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_avx2.cpp +3 -0
  168. sequenzo/dissimilarity_measures/src/xsimd/test/doc/sum_sse2.cpp +3 -0
  169. sequenzo/dissimilarity_measures/src/xsimd/test/doc/writing_vectorized_code.cpp +11 -0
  170. sequenzo/dissimilarity_measures/src/xsimd/test/main.cpp +31 -0
  171. sequenzo/dissimilarity_measures/src/xsimd/test/test_api.cpp +230 -0
  172. sequenzo/dissimilarity_measures/src/xsimd/test/test_arch.cpp +217 -0
  173. sequenzo/dissimilarity_measures/src/xsimd/test/test_basic_math.cpp +183 -0
  174. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch.cpp +1049 -0
  175. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_bool.cpp +508 -0
  176. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_cast.cpp +409 -0
  177. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_complex.cpp +712 -0
  178. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_constant.cpp +286 -0
  179. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_float.cpp +141 -0
  180. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_int.cpp +365 -0
  181. sequenzo/dissimilarity_measures/src/xsimd/test/test_batch_manip.cpp +308 -0
  182. sequenzo/dissimilarity_measures/src/xsimd/test/test_bitwise_cast.cpp +222 -0
  183. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_exponential.cpp +226 -0
  184. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_hyperbolic.cpp +183 -0
  185. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_power.cpp +265 -0
  186. sequenzo/dissimilarity_measures/src/xsimd/test/test_complex_trigonometric.cpp +236 -0
  187. sequenzo/dissimilarity_measures/src/xsimd/test/test_conversion.cpp +248 -0
  188. sequenzo/dissimilarity_measures/src/xsimd/test/test_custom_default_arch.cpp +28 -0
  189. sequenzo/dissimilarity_measures/src/xsimd/test/test_error_gamma.cpp +170 -0
  190. sequenzo/dissimilarity_measures/src/xsimd/test/test_explicit_batch_instantiation.cpp +32 -0
  191. sequenzo/dissimilarity_measures/src/xsimd/test/test_exponential.cpp +202 -0
  192. sequenzo/dissimilarity_measures/src/xsimd/test/test_extract_pair.cpp +92 -0
  193. sequenzo/dissimilarity_measures/src/xsimd/test/test_fp_manipulation.cpp +77 -0
  194. sequenzo/dissimilarity_measures/src/xsimd/test/test_gnu_source.cpp +30 -0
  195. sequenzo/dissimilarity_measures/src/xsimd/test/test_hyperbolic.cpp +167 -0
  196. sequenzo/dissimilarity_measures/src/xsimd/test/test_load_store.cpp +304 -0
  197. sequenzo/dissimilarity_measures/src/xsimd/test/test_memory.cpp +61 -0
  198. sequenzo/dissimilarity_measures/src/xsimd/test/test_poly_evaluation.cpp +64 -0
  199. sequenzo/dissimilarity_measures/src/xsimd/test/test_power.cpp +184 -0
  200. sequenzo/dissimilarity_measures/src/xsimd/test/test_rounding.cpp +199 -0
  201. sequenzo/dissimilarity_measures/src/xsimd/test/test_select.cpp +101 -0
  202. sequenzo/dissimilarity_measures/src/xsimd/test/test_shuffle.cpp +760 -0
  203. sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.cpp +4 -0
  204. sequenzo/dissimilarity_measures/src/xsimd/test/test_sum.hpp +34 -0
  205. sequenzo/dissimilarity_measures/src/xsimd/test/test_traits.cpp +172 -0
  206. sequenzo/dissimilarity_measures/src/xsimd/test/test_trigonometric.cpp +208 -0
  207. sequenzo/dissimilarity_measures/src/xsimd/test/test_utils.hpp +611 -0
  208. sequenzo/dissimilarity_measures/src/xsimd/test/test_wasm/test_wasm_playwright.py +123 -0
  209. sequenzo/dissimilarity_measures/src/xsimd/test/test_xsimd_api.cpp +1460 -0
  210. sequenzo/dissimilarity_measures/utils/__init__.py +16 -0
  211. sequenzo/dissimilarity_measures/utils/get_LCP_length_for_2_seq.py +44 -0
  212. sequenzo/dissimilarity_measures/utils/get_sm_trate_substitution_cost_matrix.cpython-311-darwin.so +0 -0
  213. sequenzo/dissimilarity_measures/utils/seqconc.cpython-311-darwin.so +0 -0
  214. sequenzo/dissimilarity_measures/utils/seqdss.cpython-311-darwin.so +0 -0
  215. sequenzo/dissimilarity_measures/utils/seqdur.cpython-311-darwin.so +0 -0
  216. sequenzo/dissimilarity_measures/utils/seqlength.cpython-311-darwin.so +0 -0
  217. sequenzo/multidomain/__init__.py +23 -0
  218. sequenzo/multidomain/association_between_domains.py +311 -0
  219. sequenzo/multidomain/cat.py +431 -0
  220. sequenzo/multidomain/combt.py +519 -0
  221. sequenzo/multidomain/dat.py +89 -0
  222. sequenzo/multidomain/idcd.py +139 -0
  223. sequenzo/multidomain/linked_polyad.py +292 -0
  224. sequenzo/openmp_setup.py +233 -0
  225. sequenzo/prefix_tree/__init__.py +43 -0
  226. sequenzo/prefix_tree/individual_level_indicators.py +1274 -0
  227. sequenzo/prefix_tree/system_level_indicators.py +465 -0
  228. sequenzo/prefix_tree/utils.py +54 -0
  229. sequenzo/sequence_characteristics/__init__.py +40 -0
  230. sequenzo/sequence_characteristics/complexity_index.py +49 -0
  231. sequenzo/sequence_characteristics/overall_cross_sectional_entropy.py +220 -0
  232. sequenzo/sequence_characteristics/plot_characteristics.py +593 -0
  233. sequenzo/sequence_characteristics/simple_characteristics.py +311 -0
  234. sequenzo/sequence_characteristics/state_frequencies_and_entropy_per_sequence.py +39 -0
  235. sequenzo/sequence_characteristics/turbulence.py +155 -0
  236. sequenzo/sequence_characteristics/variance_of_spell_durations.py +86 -0
  237. sequenzo/sequence_characteristics/within_sequence_entropy.py +43 -0
  238. sequenzo/suffix_tree/__init__.py +48 -0
  239. sequenzo/suffix_tree/individual_level_indicators.py +1638 -0
  240. sequenzo/suffix_tree/system_level_indicators.py +456 -0
  241. sequenzo/suffix_tree/utils.py +56 -0
  242. sequenzo/visualization/__init__.py +29 -0
  243. sequenzo/visualization/plot_mean_time.py +194 -0
  244. sequenzo/visualization/plot_modal_state.py +276 -0
  245. sequenzo/visualization/plot_most_frequent_sequences.py +147 -0
  246. sequenzo/visualization/plot_relative_frequency.py +404 -0
  247. sequenzo/visualization/plot_sequence_index.py +937 -0
  248. sequenzo/visualization/plot_single_medoid.py +153 -0
  249. sequenzo/visualization/plot_state_distribution.py +613 -0
  250. sequenzo/visualization/plot_transition_matrix.py +190 -0
  251. sequenzo/visualization/utils/__init__.py +23 -0
  252. sequenzo/visualization/utils/utils.py +310 -0
  253. sequenzo/with_event_history_analysis/__init__.py +35 -0
  254. sequenzo/with_event_history_analysis/sequence_analysis_multi_state_model.py +850 -0
  255. sequenzo/with_event_history_analysis/sequence_history_analysis.py +283 -0
  256. sequenzo-0.1.21.dist-info/METADATA +308 -0
  257. sequenzo-0.1.21.dist-info/RECORD +254 -0
  258. sequenzo-0.1.21.dist-info/WHEEL +5 -0
  259. sequenzo-0.1.21.dist-info/licenses/LICENSE +28 -0
  260. sequenzo-0.1.21.dist-info/top_level.txt +1 -0
@@ -0,0 +1,508 @@
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 <functional>
16
+ #include <vector>
17
+
18
+ #include "test_utils.hpp"
19
+
20
+ namespace xsimd
21
+ {
22
+
23
+ int popcount(int v)
24
+ {
25
+ // from https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan
26
+ int c; // c accumulates the total bits set in v
27
+ for (c = 0; v; c++)
28
+ {
29
+ v &= v - 1; // clear the least significant bit set
30
+ }
31
+ return c;
32
+ }
33
+
34
+ template <class T, std::size_t N>
35
+ struct get_bool_base
36
+ {
37
+ using vector_type = std::array<bool, N>;
38
+
39
+ std::vector<vector_type> almost_all_false()
40
+ {
41
+ std::vector<vector_type> vectors;
42
+ vectors.reserve(N);
43
+ for (size_t i = 0; i < N; ++i)
44
+ {
45
+ vector_type v;
46
+ v.fill(false);
47
+ v[i] = true;
48
+ vectors.push_back(std::move(v));
49
+ }
50
+ return vectors;
51
+ }
52
+
53
+ std::vector<vector_type> almost_all_true()
54
+ {
55
+ auto vectors = almost_all_false();
56
+ flip(vectors);
57
+ return vectors;
58
+ }
59
+
60
+ void flip(vector_type& vec)
61
+ {
62
+ std::transform(vec.begin(), vec.end(), vec.begin(), std::logical_not<bool> {});
63
+ }
64
+
65
+ void flip(std::vector<vector_type>& vectors)
66
+ {
67
+ for (auto& vec : vectors)
68
+ {
69
+ flip(vec);
70
+ }
71
+ }
72
+ };
73
+
74
+ template <class T, size_t N = T::size>
75
+ struct get_bool;
76
+
77
+ template <class T>
78
+ struct get_bool<batch_bool<T>, 1> : public get_bool_base<T, 1>
79
+ {
80
+ using type = batch_bool<T>;
81
+ type all_true = type(true);
82
+ type all_false = type(false);
83
+ type half = { 0 };
84
+ type ihalf = { 1 };
85
+ type interspersed = { 0 };
86
+ };
87
+
88
+ template <class T>
89
+ struct get_bool<batch_bool<T>, 2> : public get_bool_base<T, 2>
90
+ {
91
+ using type = batch_bool<T>;
92
+ type all_true = type(true);
93
+ type all_false = type(false);
94
+ type half = { 0, 1 };
95
+ type ihalf = { 1, 0 };
96
+ type interspersed = { 0, 1 };
97
+ };
98
+
99
+ template <class T>
100
+ struct get_bool<batch_bool<T>, 4> : public get_bool_base<T, 4>
101
+ {
102
+ using type = batch_bool<T>;
103
+
104
+ type all_true = true;
105
+ type all_false = false;
106
+ type half = { 0, 0, 1, 1 };
107
+ type ihalf = { 1, 1, 0, 0 };
108
+ type interspersed = { 0, 1, 0, 1 };
109
+ };
110
+
111
+ template <class T>
112
+ struct get_bool<batch_bool<T>, 8> : public get_bool_base<T, 8>
113
+ {
114
+ using type = batch_bool<T>;
115
+ type all_true = true;
116
+ type all_false = false;
117
+ type half = { 0, 0, 0, 0, 1, 1, 1, 1 };
118
+ type ihalf = { 1, 1, 1, 1, 0, 0, 0, 0 };
119
+ type interspersed = { 0, 1, 0, 1, 0, 1, 0, 1 };
120
+ };
121
+
122
+ template <class T>
123
+ struct get_bool<batch_bool<T>, 16> : public get_bool_base<T, 16>
124
+ {
125
+ using type = batch_bool<T>;
126
+ type all_true = true;
127
+ type all_false = false;
128
+ type half = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 };
129
+ type ihalf = { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
130
+ type interspersed = { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
131
+ };
132
+
133
+ template <class T>
134
+ struct get_bool<batch_bool<T>, 32> : public get_bool_base<T, 32>
135
+ {
136
+ using type = batch_bool<T>;
137
+ type all_true = true;
138
+ type all_false = false;
139
+ type half = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
140
+ type ihalf = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
141
+ type interspersed = { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
142
+ };
143
+
144
+ template <class T>
145
+ struct get_bool<batch_bool<T>, 64> : public get_bool_base<T, 64>
146
+ {
147
+ using type = batch_bool<T>;
148
+ type all_true = true;
149
+ type all_false = false;
150
+ type half = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
151
+ type ihalf = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
152
+ type interspersed = { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
153
+ };
154
+
155
+ }
156
+
157
+ template <class B>
158
+ struct batch_bool_test
159
+ {
160
+ using batch_type = B;
161
+ using value_type = typename B::value_type;
162
+ static constexpr size_t size = B::size;
163
+ using batch_bool_type = typename B::batch_bool_type;
164
+ using array_type = std::array<value_type, size>;
165
+ using bool_array_type = std::array<bool, size>;
166
+
167
+ array_type lhs;
168
+ array_type rhs;
169
+ bool_array_type all_true;
170
+ bool_array_type ba;
171
+
172
+ batch_bool_test()
173
+ {
174
+ for (size_t i = 0; i < size; ++i)
175
+ {
176
+ lhs[i] = value_type(i);
177
+ rhs[i] = i == 0 % 2 ? lhs[i] : lhs[i] * value_type(2);
178
+ all_true[i] = true;
179
+ ba[i] = i == 0 % 2 ? true : false;
180
+ }
181
+ }
182
+
183
+ template <size_t... Is>
184
+ struct pack
185
+ {
186
+ };
187
+
188
+ template <size_t... Values>
189
+ void check_constructor_from_sequence(std::integral_constant<size_t, 0>, pack<Values...>) const
190
+ {
191
+ bool_array_type res = { bool(Values % 3)... };
192
+ bool_array_type tmp;
193
+ batch_bool_type b0(bool(Values % 3)...);
194
+ b0.store_unaligned(tmp.data());
195
+ INFO("batch_bool(values...)");
196
+ CHECK_EQ(tmp, res);
197
+
198
+ batch_bool_type b1 { bool(Values % 3)... };
199
+ b1.store_unaligned(tmp.data());
200
+ INFO("batch_bool{values...}");
201
+ CHECK_EQ(tmp, res);
202
+ }
203
+
204
+ template <size_t I, size_t... Values>
205
+ void check_constructor_from_sequence(std::integral_constant<size_t, I>, pack<Values...>) const
206
+ {
207
+ return check_constructor_from_sequence(std::integral_constant<size_t, I - 1>(), pack<Values..., I>());
208
+ }
209
+
210
+ void test_constructors() const
211
+ {
212
+ batch_bool_type a;
213
+ // value uninitialized, cannot test it.
214
+ (void)a;
215
+
216
+ bool_array_type res;
217
+ batch_bool_type b(true);
218
+ b.store_unaligned(res.data());
219
+ INFO("batch_bool{value}");
220
+ CHECK_EQ(res, all_true);
221
+
222
+ batch_bool_type c { true };
223
+ c.store_unaligned(res.data());
224
+ INFO("batch_bool{value}");
225
+ CHECK_EQ(res, all_true);
226
+
227
+ check_constructor_from_sequence(std::integral_constant<size_t, size>(), pack<>());
228
+ }
229
+
230
+ void test_load_store() const
231
+ {
232
+ bool_array_type res;
233
+ batch_bool_type b(batch_bool_type::load_unaligned(ba.data()));
234
+ b.store_unaligned(res.data());
235
+ CHECK_EQ(res, ba);
236
+
237
+ alignas(xsimd::default_arch::alignment()) bool_array_type arhs(this->ba);
238
+ alignas(xsimd::default_arch::alignment()) bool_array_type ares;
239
+ b = batch_bool_type::load_aligned(arhs.data());
240
+ b.store_aligned(ares.data());
241
+ CHECK_EQ(ares, arhs);
242
+ }
243
+
244
+ void test_any_all() const
245
+ {
246
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
247
+ // any
248
+ {
249
+ auto any_check_false = (batch_lhs() != batch_lhs());
250
+ bool any_res_false = xsimd::any(any_check_false);
251
+ CHECK_FALSE(any_res_false);
252
+ auto any_check_true = (batch_lhs() == batch_rhs());
253
+ bool any_res_true = xsimd::any(any_check_true);
254
+ CHECK_UNARY(any_res_true);
255
+
256
+ for (const auto& vec : bool_g.almost_all_false())
257
+ {
258
+ batch_bool_type b = batch_bool_type::load_unaligned(vec.data());
259
+ bool any_res = xsimd::any(b);
260
+ CHECK_UNARY(any_res);
261
+ }
262
+
263
+ for (const auto& vec : bool_g.almost_all_true())
264
+ {
265
+ batch_bool_type b = batch_bool_type::load_unaligned(vec.data());
266
+ bool any_res = xsimd::any(b);
267
+ CHECK_UNARY(any_res);
268
+ }
269
+ }
270
+ // all
271
+ {
272
+ auto all_check_false = (batch_lhs() == batch_rhs());
273
+ bool all_res_false = xsimd::all(all_check_false);
274
+ CHECK_FALSE(all_res_false);
275
+ auto all_check_true = (batch_lhs() == batch_lhs());
276
+ bool all_res_true = xsimd::all(all_check_true);
277
+ CHECK_UNARY(all_res_true);
278
+
279
+ for (const auto& vec : bool_g.almost_all_false())
280
+ {
281
+ // TODO: implement batch_bool(bool*)
282
+ // It currently compiles (need to understand why) but does not
283
+ // give expected result
284
+ batch_bool_type b = batch_bool_type::load_unaligned(vec.data());
285
+ bool all_res = xsimd::all(b);
286
+ CHECK_FALSE(all_res);
287
+ }
288
+
289
+ for (const auto& vec : bool_g.almost_all_true())
290
+ {
291
+ batch_bool_type b = batch_bool_type::load_unaligned(vec.data());
292
+ bool all_res = xsimd::all(b);
293
+ CHECK_FALSE(all_res);
294
+ }
295
+ }
296
+ // none
297
+ {
298
+ auto none_check_false = (batch_lhs() == batch_rhs());
299
+ bool none_res_false = xsimd::none(none_check_false);
300
+ CHECK_FALSE(none_res_false);
301
+ auto none_check_true = (batch_lhs() != batch_lhs());
302
+ bool none_res_true = xsimd::none(none_check_true);
303
+ CHECK_UNARY(none_res_true);
304
+
305
+ for (const auto& vec : bool_g.almost_all_false())
306
+ {
307
+ batch_bool_type b = batch_bool_type::load_unaligned(vec.data());
308
+ bool none_res = xsimd::none(b);
309
+ CHECK_FALSE(none_res);
310
+ }
311
+
312
+ for (const auto& vec : bool_g.almost_all_true())
313
+ {
314
+ batch_bool_type b = batch_bool_type::load_unaligned(vec.data());
315
+ bool none_res = xsimd::none(b);
316
+ CHECK_FALSE(none_res);
317
+ }
318
+ }
319
+ }
320
+
321
+ void test_logical_operations() const
322
+ {
323
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
324
+ size_t s = size;
325
+ // operator!=
326
+ {
327
+ bool res = xsimd::all(bool_g.half != bool_g.ihalf);
328
+ CHECK_UNARY(res);
329
+ }
330
+ // operator==
331
+ {
332
+ CHECK_BATCH_EQ(bool_g.half, !bool_g.ihalf);
333
+ }
334
+ // operator &&
335
+ {
336
+ batch_bool_type res = bool_g.half && bool_g.ihalf;
337
+ bool_array_type ares;
338
+ res.store_unaligned(ares.data());
339
+ size_t nb_false = std::count(ares.cbegin(), ares.cend(), false);
340
+ CHECK_EQ(nb_false, s);
341
+ }
342
+ // operator ||
343
+ {
344
+ batch_bool_type res = bool_g.half || bool_g.ihalf;
345
+ bool_array_type ares;
346
+ res.store_unaligned(ares.data());
347
+ size_t nb_true = std::count(ares.cbegin(), ares.cend(), true);
348
+ CHECK_EQ(nb_true, s);
349
+ }
350
+ // operator ^
351
+ {
352
+ batch_bool_type res = bool_g.half ^ bool_g.ihalf;
353
+ bool_array_type ares;
354
+ res.store_unaligned(ares.data());
355
+ size_t nb_true = std::count(ares.cbegin(), ares.cend(), true);
356
+ CHECK_EQ(nb_true, s);
357
+ }
358
+ // bitwise_andnot
359
+ {
360
+ batch_bool_type res = xsimd::bitwise_andnot(bool_g.half, bool_g.half);
361
+ bool_array_type ares;
362
+ res.store_unaligned(ares.data());
363
+ size_t nb_false = std::count(ares.cbegin(), ares.cend(), false);
364
+ CHECK_EQ(nb_false, s);
365
+ }
366
+ }
367
+
368
+ void test_bitwise_operations() const
369
+ {
370
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
371
+ // operator version
372
+ {
373
+ INFO("operator~");
374
+ CHECK_BATCH_EQ(bool_g.half, ~bool_g.ihalf);
375
+ }
376
+ {
377
+ INFO("operator|");
378
+ CHECK_BATCH_EQ(bool_g.half | bool_g.ihalf, bool_g.all_true);
379
+ }
380
+ {
381
+ INFO("operator&");
382
+ CHECK_BATCH_EQ(bool_g.half & bool_g.ihalf, bool_g.all_false);
383
+ }
384
+ {
385
+ INFO("operator^");
386
+ CHECK_BATCH_EQ(bool_g.half ^ bool_g.all_true, bool_g.ihalf);
387
+ }
388
+ // free function version
389
+ {
390
+ INFO("bitwise_not");
391
+ CHECK_BATCH_EQ(bool_g.half, xsimd::bitwise_not(bool_g.ihalf));
392
+ }
393
+ {
394
+ INFO("bitwise_or");
395
+ CHECK_BATCH_EQ(xsimd::bitwise_or(bool_g.half, bool_g.ihalf), bool_g.all_true);
396
+ }
397
+ {
398
+ INFO("bitwise_and");
399
+ CHECK_BATCH_EQ(xsimd::bitwise_and(bool_g.half, bool_g.ihalf), bool_g.all_false);
400
+ }
401
+ {
402
+ INFO("bitwise_xor");
403
+ CHECK_BATCH_EQ(xsimd::bitwise_xor(bool_g.half, bool_g.all_true), bool_g.ihalf);
404
+ }
405
+ }
406
+
407
+ void test_update_operations() const
408
+ {
409
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
410
+ {
411
+ auto tmp = bool_g.half;
412
+ tmp |= bool_g.ihalf;
413
+ bool res = xsimd::all(tmp);
414
+ INFO("operator|=");
415
+ CHECK_UNARY(res);
416
+ }
417
+ {
418
+ auto tmp = bool_g.half;
419
+ tmp &= bool_g.half;
420
+ INFO("operator&=");
421
+ CHECK_BATCH_EQ(tmp, bool_g.half);
422
+ }
423
+ {
424
+ auto tmp = bool_g.half;
425
+ tmp ^= bool_g.ihalf;
426
+ bool res = xsimd::all(tmp);
427
+ INFO("operator^=");
428
+ CHECK_UNARY(res);
429
+ }
430
+ }
431
+
432
+ void test_mask() const
433
+ {
434
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
435
+ const uint64_t full_mask = ((uint64_t)-1) >> (64 - batch_bool_type::size);
436
+ CHECK_EQ(bool_g.all_false.mask(), 0);
437
+ CHECK_EQ(batch_bool_type::from_mask(bool_g.all_false.mask()).mask(), bool_g.all_false.mask());
438
+
439
+ CHECK_EQ(bool_g.all_true.mask(), full_mask);
440
+ CHECK_EQ(batch_bool_type::from_mask(bool_g.all_true.mask()).mask(), bool_g.all_true.mask());
441
+
442
+ CHECK_EQ(bool_g.half.mask(), full_mask & ((uint64_t)-1) << (batch_bool_type::size / 2));
443
+ CHECK_EQ(batch_bool_type::from_mask(bool_g.half.mask()).mask(), bool_g.half.mask());
444
+
445
+ CHECK_EQ(bool_g.ihalf.mask(), full_mask & ~(((uint64_t)-1) << (batch_bool_type::size / 2)));
446
+ CHECK_EQ(batch_bool_type::from_mask(bool_g.ihalf.mask()).mask(), bool_g.ihalf.mask());
447
+
448
+ CHECK_EQ(bool_g.interspersed.mask(), full_mask & 0xAAAAAAAAAAAAAAAAul);
449
+ CHECK_EQ(batch_bool_type::from_mask(bool_g.interspersed.mask()).mask(), bool_g.interspersed.mask());
450
+ }
451
+
452
+ void test_count() const
453
+ {
454
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
455
+ CHECK_EQ(count(bool_g.all_false), 0);
456
+ CHECK_EQ(count(bool_g.all_true), batch_bool_type::size);
457
+ CHECK_EQ(count(bool_g.half), batch_bool_type::size / 2);
458
+ }
459
+
460
+ void test_comparison() const
461
+ {
462
+ auto bool_g = xsimd::get_bool<batch_bool_type> {};
463
+ // eq
464
+ {
465
+ CHECK_BATCH_EQ(bool_g.half, !bool_g.ihalf);
466
+ CHECK_BATCH_EQ(xsimd::eq(bool_g.half, !bool_g.ihalf), bool_g.all_true);
467
+ }
468
+ // neq
469
+ {
470
+ CHECK_BATCH_EQ(xsimd::neq(bool_g.half, bool_g.ihalf), bool_g.all_true);
471
+ }
472
+ }
473
+
474
+ private:
475
+ batch_type batch_lhs() const
476
+ {
477
+ return batch_type::load_unaligned(lhs.data());
478
+ }
479
+
480
+ batch_type batch_rhs() const
481
+ {
482
+ return batch_type::load_unaligned(rhs.data());
483
+ }
484
+ };
485
+
486
+ TEST_CASE_TEMPLATE("[xsimd batch bool]", B, BATCH_TYPES)
487
+ {
488
+ batch_bool_test<B> Test;
489
+
490
+ SUBCASE("constructors") { Test.test_constructors(); }
491
+
492
+ SUBCASE("load store") { Test.test_load_store(); }
493
+
494
+ SUBCASE("any all") { Test.test_any_all(); }
495
+
496
+ SUBCASE("logical operations") { Test.test_logical_operations(); }
497
+
498
+ SUBCASE("bitwise operations") { Test.test_bitwise_operations(); }
499
+
500
+ SUBCASE("update operations") { Test.test_update_operations(); }
501
+
502
+ SUBCASE("mask") { Test.test_mask(); }
503
+
504
+ SUBCASE("count") { Test.test_count(); }
505
+
506
+ SUBCASE("eq neq") { Test.test_comparison(); }
507
+ }
508
+ #endif