minimap2 0.2.25.0 → 0.2.25.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -3
  3. data/ext/minimap2/Makefile +6 -2
  4. data/ext/minimap2/NEWS.md +38 -0
  5. data/ext/minimap2/README.md +9 -3
  6. data/ext/minimap2/align.c +5 -3
  7. data/ext/minimap2/cookbook.md +2 -2
  8. data/ext/minimap2/format.c +7 -4
  9. data/ext/minimap2/kalloc.c +20 -1
  10. data/ext/minimap2/kalloc.h +13 -2
  11. data/ext/minimap2/ksw2.h +1 -0
  12. data/ext/minimap2/ksw2_extd2_sse.c +1 -1
  13. data/ext/minimap2/ksw2_exts2_sse.c +79 -40
  14. data/ext/minimap2/ksw2_extz2_sse.c +1 -1
  15. data/ext/minimap2/lchain.c +15 -16
  16. data/ext/minimap2/lib/simde/CONTRIBUTING.md +114 -0
  17. data/ext/minimap2/lib/simde/COPYING +20 -0
  18. data/ext/minimap2/lib/simde/README.md +333 -0
  19. data/ext/minimap2/lib/simde/amalgamate.py +58 -0
  20. data/ext/minimap2/lib/simde/meson.build +33 -0
  21. data/ext/minimap2/lib/simde/netlify.toml +20 -0
  22. data/ext/minimap2/lib/simde/simde/arm/neon/float32x2.h +140 -0
  23. data/ext/minimap2/lib/simde/simde/arm/neon/float32x4.h +137 -0
  24. data/ext/minimap2/lib/simde/simde/arm/neon/float64x1.h +142 -0
  25. data/ext/minimap2/lib/simde/simde/arm/neon/float64x2.h +145 -0
  26. data/ext/minimap2/lib/simde/simde/arm/neon/int16x4.h +140 -0
  27. data/ext/minimap2/lib/simde/simde/arm/neon/int16x8.h +145 -0
  28. data/ext/minimap2/lib/simde/simde/arm/neon/int32x2.h +140 -0
  29. data/ext/minimap2/lib/simde/simde/arm/neon/int32x4.h +143 -0
  30. data/ext/minimap2/lib/simde/simde/arm/neon/int64x1.h +137 -0
  31. data/ext/minimap2/lib/simde/simde/arm/neon/int64x2.h +141 -0
  32. data/ext/minimap2/lib/simde/simde/arm/neon/int8x16.h +147 -0
  33. data/ext/minimap2/lib/simde/simde/arm/neon/int8x8.h +141 -0
  34. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h +134 -0
  35. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h +138 -0
  36. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h +134 -0
  37. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h +137 -0
  38. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h +131 -0
  39. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h +135 -0
  40. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h +141 -0
  41. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h +135 -0
  42. data/ext/minimap2/lib/simde/simde/arm/neon.h +97 -0
  43. data/ext/minimap2/lib/simde/simde/check.h +267 -0
  44. data/ext/minimap2/lib/simde/simde/debug-trap.h +83 -0
  45. data/ext/minimap2/lib/simde/simde/hedley.h +1899 -0
  46. data/ext/minimap2/lib/simde/simde/simde-arch.h +445 -0
  47. data/ext/minimap2/lib/simde/simde/simde-common.h +697 -0
  48. data/ext/minimap2/lib/simde/simde/x86/avx.h +5385 -0
  49. data/ext/minimap2/lib/simde/simde/x86/avx2.h +2402 -0
  50. data/ext/minimap2/lib/simde/simde/x86/avx512bw.h +391 -0
  51. data/ext/minimap2/lib/simde/simde/x86/avx512f.h +3389 -0
  52. data/ext/minimap2/lib/simde/simde/x86/avx512vl.h +112 -0
  53. data/ext/minimap2/lib/simde/simde/x86/fma.h +659 -0
  54. data/ext/minimap2/lib/simde/simde/x86/mmx.h +2210 -0
  55. data/ext/minimap2/lib/simde/simde/x86/sse.h +3696 -0
  56. data/ext/minimap2/lib/simde/simde/x86/sse2.h +5991 -0
  57. data/ext/minimap2/lib/simde/simde/x86/sse3.h +343 -0
  58. data/ext/minimap2/lib/simde/simde/x86/sse4.1.h +1783 -0
  59. data/ext/minimap2/lib/simde/simde/x86/sse4.2.h +105 -0
  60. data/ext/minimap2/lib/simde/simde/x86/ssse3.h +1053 -0
  61. data/ext/minimap2/lib/simde/simde/x86/svml.h +543 -0
  62. data/ext/minimap2/lib/simde/test/CMakeLists.txt +166 -0
  63. data/ext/minimap2/lib/simde/test/arm/meson.build +4 -0
  64. data/ext/minimap2/lib/simde/test/arm/neon/meson.build +23 -0
  65. data/ext/minimap2/lib/simde/test/arm/neon/skel.c +871 -0
  66. data/ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h +134 -0
  67. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.c +39 -0
  68. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.h +10 -0
  69. data/ext/minimap2/lib/simde/test/arm/neon/vadd.c +1260 -0
  70. data/ext/minimap2/lib/simde/test/arm/neon/vdup_n.c +873 -0
  71. data/ext/minimap2/lib/simde/test/arm/neon/vmul.c +1084 -0
  72. data/ext/minimap2/lib/simde/test/arm/neon/vsub.c +1260 -0
  73. data/ext/minimap2/lib/simde/test/arm/test-arm-internal.h +18 -0
  74. data/ext/minimap2/lib/simde/test/arm/test-arm.c +20 -0
  75. data/ext/minimap2/lib/simde/test/arm/test-arm.h +8 -0
  76. data/ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake +171 -0
  77. data/ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake +68 -0
  78. data/ext/minimap2/lib/simde/test/meson.build +64 -0
  79. data/ext/minimap2/lib/simde/test/munit/COPYING +21 -0
  80. data/ext/minimap2/lib/simde/test/munit/Makefile +55 -0
  81. data/ext/minimap2/lib/simde/test/munit/README.md +54 -0
  82. data/ext/minimap2/lib/simde/test/munit/example.c +351 -0
  83. data/ext/minimap2/lib/simde/test/munit/meson.build +37 -0
  84. data/ext/minimap2/lib/simde/test/munit/munit.c +2055 -0
  85. data/ext/minimap2/lib/simde/test/munit/munit.h +535 -0
  86. data/ext/minimap2/lib/simde/test/run-tests.c +20 -0
  87. data/ext/minimap2/lib/simde/test/run-tests.h +260 -0
  88. data/ext/minimap2/lib/simde/test/x86/avx.c +13752 -0
  89. data/ext/minimap2/lib/simde/test/x86/avx2.c +9977 -0
  90. data/ext/minimap2/lib/simde/test/x86/avx512bw.c +2664 -0
  91. data/ext/minimap2/lib/simde/test/x86/avx512f.c +10416 -0
  92. data/ext/minimap2/lib/simde/test/x86/avx512vl.c +210 -0
  93. data/ext/minimap2/lib/simde/test/x86/fma.c +2557 -0
  94. data/ext/minimap2/lib/simde/test/x86/meson.build +33 -0
  95. data/ext/minimap2/lib/simde/test/x86/mmx.c +2878 -0
  96. data/ext/minimap2/lib/simde/test/x86/skel.c +2984 -0
  97. data/ext/minimap2/lib/simde/test/x86/sse.c +5121 -0
  98. data/ext/minimap2/lib/simde/test/x86/sse2.c +9860 -0
  99. data/ext/minimap2/lib/simde/test/x86/sse3.c +486 -0
  100. data/ext/minimap2/lib/simde/test/x86/sse4.1.c +3446 -0
  101. data/ext/minimap2/lib/simde/test/x86/sse4.2.c +101 -0
  102. data/ext/minimap2/lib/simde/test/x86/ssse3.c +2084 -0
  103. data/ext/minimap2/lib/simde/test/x86/svml.c +1545 -0
  104. data/ext/minimap2/lib/simde/test/x86/test-avx.h +16 -0
  105. data/ext/minimap2/lib/simde/test/x86/test-avx512.h +25 -0
  106. data/ext/minimap2/lib/simde/test/x86/test-mmx.h +13 -0
  107. data/ext/minimap2/lib/simde/test/x86/test-sse.h +13 -0
  108. data/ext/minimap2/lib/simde/test/x86/test-sse2.h +13 -0
  109. data/ext/minimap2/lib/simde/test/x86/test-x86-internal.h +196 -0
  110. data/ext/minimap2/lib/simde/test/x86/test-x86.c +48 -0
  111. data/ext/minimap2/lib/simde/test/x86/test-x86.h +8 -0
  112. data/ext/minimap2/main.c +13 -6
  113. data/ext/minimap2/map.c +0 -5
  114. data/ext/minimap2/minimap.h +40 -31
  115. data/ext/minimap2/minimap2.1 +19 -5
  116. data/ext/minimap2/misc/paftools.js +545 -24
  117. data/ext/minimap2/options.c +1 -1
  118. data/ext/minimap2/pyproject.toml +2 -0
  119. data/ext/minimap2/python/mappy.pyx +3 -1
  120. data/ext/minimap2/seed.c +1 -1
  121. data/ext/minimap2/setup.py +32 -22
  122. data/lib/minimap2/version.rb +1 -1
  123. metadata +100 -3
@@ -0,0 +1,16 @@
1
+ #include "../../simde/x86/avx.h"
2
+
3
+ #include "test-sse2.h"
4
+
5
+ #if !defined(SIMDE_TEST_X86_AVX)
6
+ #define SIMDE_TEST_X86_AVX
7
+
8
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m256, f32)
9
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m256d, f64)
10
+
11
+ #define simde_assert_m256_close(a, b, precision) \
12
+ simde_assert_m256_f32_close_ex(__LINE__, __FILE__, a, b, precision)
13
+ #define simde_assert_m256d_close(a, b, precision) \
14
+ simde_assert_m256d_f64_close_ex(__LINE__, __FILE__, a, b, precision)
15
+
16
+ #endif /* !defined(SIMDE_TEST_X86_AVX) */
@@ -0,0 +1,25 @@
1
+ #include "../../simde/x86/avx512f.h"
2
+
3
+ #include "test-avx.h"
4
+
5
+ #if !defined(SIMDE_TEST_X86_AVX512)
6
+ #define SIMDE_TEST_X86_AVX512
7
+
8
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m512, f32)
9
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m512d, f64)
10
+
11
+ #define simde_assert_m512_close(a, b, precision) \
12
+ simde_assert_m512_f32_close_ex(__LINE__, __FILE__, a, b, precision)
13
+ #define simde_assert_m512d_close(a, b, precision) \
14
+ simde_assert_m512d_f64_close_ex(__LINE__, __FILE__, a, b, precision)
15
+
16
+ #define simde_assert_mmask8(a, op, b) \
17
+ munit_assert_uint8(HEDLEY_STATIC_CAST(uint8_t, a), op, HEDLEY_STATIC_CAST(uint8_t, b))
18
+ #define simde_assert_mmask16(a, op, b) \
19
+ munit_assert_uint16(HEDLEY_STATIC_CAST(uint16_t, a), op, HEDLEY_STATIC_CAST(uint16_t, b))
20
+ #define simde_assert_mmask32(a, op, b) \
21
+ munit_assert_uint32(HEDLEY_STATIC_CAST(uint32_t, a), op, HEDLEY_STATIC_CAST(uint32_t, b))
22
+ #define simde_assert_mmask64(a, op, b) \
23
+ munit_assert_uint64(HEDLEY_STATIC_CAST(uint64_t, a), op, HEDLEY_STATIC_CAST(uint64_t, b))
24
+
25
+ #endif /* !defined(SIMDE_TEST_X86_AVX512) */
@@ -0,0 +1,13 @@
1
+ #include "../../simde/x86/mmx.h"
2
+
3
+ #include "test-x86-internal.h"
4
+
5
+ #if !defined(SIMDE_TEST_X86_MMX)
6
+ #define SIMDE_TEST_X86_MMX
7
+
8
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m64, f32)
9
+
10
+ #define simde_assert_m64_close(a, b, precision) \
11
+ simde_assert_m64_f32_close_ex(__LINE__, __FILE__, a, b, precision)
12
+
13
+ #endif /* !defined(SIMDE_TEST_X86_MMX) */
@@ -0,0 +1,13 @@
1
+ #include "../../simde/x86/sse.h"
2
+
3
+ #include "test-mmx.h"
4
+
5
+ #if !defined(SIMDE_TEST_X86_SSE)
6
+ #define SIMDE_TEST_X86_SSE
7
+
8
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m128, f32)
9
+
10
+ #define simde_assert_m128_close(a, b, precision) \
11
+ simde_assert_m128_f32_close_ex(__LINE__, __FILE__, a, b, precision)
12
+
13
+ #endif /* !defined(SIMDE_TEST_X86_SSE) */
@@ -0,0 +1,13 @@
1
+ #include "../../simde/x86/sse2.h"
2
+
3
+ #include "test-sse.h"
4
+
5
+ #if !defined(SIMDE_TEST_X86_SSE2)
6
+ #define SIMDE_TEST_X86_SSE2
7
+
8
+ SIMDE_TEST_DEFINE_ASSERT_VEC_CLOSE(m128d, f64)
9
+
10
+ #define simde_assert_m128d_close(a, b, precision) \
11
+ simde_assert_m128d_f64_close_ex(__LINE__, __FILE__, a, b, precision)
12
+
13
+ #endif /* !defined(SIMDE_TEST_X86_SSE2) */
@@ -0,0 +1,196 @@
1
+ #if !defined(SIMDE_TESTS_X86_INTERNAL_H)
2
+ #define SIMDE_TESTS_CURRENT_ARCH x86
3
+
4
+ #include "../run-tests.h"
5
+
6
+ /* Assert that two vectors are bit-identical without worring about the
7
+ underlying type. */
8
+ #define simde_assert_vec_equal(a, b, T) do { \
9
+ const T##_private simde_a_ = T##_to_private(a); \
10
+ const T##_private simde_b_ = T##_to_private(b); \
11
+ for (int simde_i_ = 0 ; simde_i_ < HEDLEY_STATIC_CAST(int, (sizeof(simde_a_.u32f) / sizeof(simde_a_.u32f[0]))) ; simde_i_++) { \
12
+ if (HEDLEY_UNLIKELY(simde_a_.u32f[simde_i_] != simde_b_.u32f[simde_i_])) { \
13
+ munit_errorf("assertion failed: " #a ".u32f[%d] (%" PRIxFAST32 ") != " #b ".u32f[%d] (%" PRIxFAST32 ")", \
14
+ simde_i_, simde_a_.u32f[simde_i_], \
15
+ simde_i_, simde_b_.u32f[simde_i_]); \
16
+ } \
17
+ } \
18
+ } while(0)
19
+ #define simde_assert_m64_equal(a, b) \
20
+ simde_assert_vec_equal(a, b, simde__m64)
21
+ #define simde_assert_m128_equal(a, b) \
22
+ simde_assert_vec_equal(a, b, simde__m128)
23
+ #define simde_assert_m128i_equal(a, b) \
24
+ simde_assert_vec_equal(a, b, simde__m128i)
25
+ #define simde_assert_m128d_equal(a, b) \
26
+ simde_assert_vec_equal(a, b, simde__m128d)
27
+ #define simde_assert_m256_equal(a, b) \
28
+ simde_assert_vec_equal(a, b, simde__m256)
29
+ #define simde_assert_m256i_equal(a, b) \
30
+ simde_assert_vec_equal(a, b, simde__m256i)
31
+ #define simde_assert_m256d_equal(a, b) \
32
+ simde_assert_vec_equal(a, b, simde__m256d)
33
+
34
+ /* Assert that every integer in two vectors are equal */
35
+ #define simde_assert_vec_i(a, op, b, T, accessor, fmt) do { \
36
+ const T##_private simde_a_ = T##_to_private(a); \
37
+ const T##_private simde_b_ = T##_to_private(b); \
38
+ for (int simde_i_ = 0 ; simde_i_ < HEDLEY_STATIC_CAST(int, (sizeof(simde_a_.accessor) / sizeof(simde_a_.accessor[0]))) ; simde_i_++) { \
39
+ if (HEDLEY_UNLIKELY(!(simde_a_.accessor[simde_i_] op simde_b_.accessor[simde_i_]))) { \
40
+ munit_errorf("assertion failed: " #a "." #accessor "[%d] " #op " " #b "." #accessor "[%d] (%" fmt " " #op " %" fmt ")", \
41
+ simde_i_, simde_i_, simde_a_.accessor[simde_i_], simde_b_.accessor[simde_i_]); \
42
+ } \
43
+ } \
44
+ } while (0)
45
+ #define simde_assert_m512i_i8(a, op, b) \
46
+ simde_assert_vec_i(a, op, b, simde__m512i, i8, PRId8)
47
+ #define simde_assert_m512i_i16(a, op, b) \
48
+ simde_assert_vec_i(a, op, b, simde__m512i, i16, PRId16)
49
+ #define simde_assert_m512i_i32(a, op, b) \
50
+ simde_assert_vec_i(a, op, b, simde__m512i, i32, PRId32)
51
+ #define simde_assert_m512i_i64(a, op, b) \
52
+ simde_assert_vec_i(a, op, b, simde__m512i, i64, PRId64)
53
+ #define simde_assert_m512i_u8(a, op, b) \
54
+ simde_assert_vec_i(a, op, b, simde__m512i, u8, PRIu8)
55
+ #define simde_assert_m512i_u16(a, op, b) \
56
+ simde_assert_vec_i(a, op, b, simde__m512i, u16, PRIu16)
57
+ #define simde_assert_m512i_u32(a, op, b) \
58
+ simde_assert_vec_i(a, op, b, simde__m512i, u32, PRIu32)
59
+ #define simde_assert_m512i_u64(a, op, b) \
60
+ simde_assert_vec_i(a, op, b, simde__m512i, u64, PRIu64)
61
+ #define simde_assert_m256i_i8(a, op, b) \
62
+ simde_assert_vec_i(a, op, b, simde__m256i, i8, PRId8)
63
+ #define simde_assert_m256i_i16(a, op, b) \
64
+ simde_assert_vec_i(a, op, b, simde__m256i, i16, PRId16)
65
+ #define simde_assert_m256i_i32(a, op, b) \
66
+ simde_assert_vec_i(a, op, b, simde__m256i, i32, PRId32)
67
+ #define simde_assert_m256i_i64(a, op, b) \
68
+ simde_assert_vec_i(a, op, b, simde__m256i, i64, PRId64)
69
+ #define simde_assert_m256i_u8(a, op, b) \
70
+ simde_assert_vec_i(a, op, b, simde__m256i, u8, PRIu8)
71
+ #define simde_assert_m256i_u16(a, op, b) \
72
+ simde_assert_vec_i(a, op, b, simde__m256i, u16, PRIu16)
73
+ #define simde_assert_m256i_u32(a, op, b) \
74
+ simde_assert_vec_i(a, op, b, simde__m256i, u32, PRIu32)
75
+ #define simde_assert_m256i_u64(a, op, b) \
76
+ simde_assert_vec_i(a, op, b, simde__m256i, u64, PRIu64)
77
+ #define simde_assert_m128i_i8(a, op, b) \
78
+ simde_assert_vec_i(a, op, b, simde__m128i, i8, PRId8)
79
+ #define simde_assert_m128i_i16(a, op, b) \
80
+ simde_assert_vec_i(a, op, b, simde__m128i, i16, PRId16)
81
+ #define simde_assert_m128i_i32(a, op, b) \
82
+ simde_assert_vec_i(a, op, b, simde__m128i, i32, PRId32)
83
+ #define simde_assert_m128i_i64(a, op, b) \
84
+ simde_assert_vec_i(a, op, b, simde__m128i, i64, PRId64)
85
+ #define simde_assert_m128i_u8(a, op, b) \
86
+ simde_assert_vec_i(a, op, b, simde__m128i, u8, PRIu8)
87
+ #define simde_assert_m128i_u16(a, op, b) \
88
+ simde_assert_vec_i(a, op, b, simde__m128i, u16, PRIu16)
89
+ #define simde_assert_m128i_u32(a, op, b) \
90
+ simde_assert_vec_i(a, op, b, simde__m128i, u32, PRIu32)
91
+ #define simde_assert_m128i_u64(a, op, b) \
92
+ simde_assert_vec_i(a, op, b, simde__m128i, u64, PRIu64)
93
+ #define simde_assert_m64_i8(a, op, b) \
94
+ simde_assert_vec_i(a, op, b, simde__m64, i8, PRId8)
95
+ #define simde_assert_m64_i16(a, op, b) \
96
+ simde_assert_vec_i(a, op, b, simde__m64, i16, PRId16)
97
+ #define simde_assert_m64_i32(a, op, b) \
98
+ simde_assert_vec_i(a, op, b, simde__m64, i32, PRId32)
99
+ #define simde_assert_m64_i64(a, op, b) \
100
+ simde_assert_vec_i(a, op, b, simde__m64, i64, PRId64)
101
+ #define simde_assert_m64_u8(a, op, b) \
102
+ simde_assert_vec_i(a, op, b, simde__m64, u8, PRIu8)
103
+ #define simde_assert_m64_u16(a, op, b) \
104
+ simde_assert_vec_i(a, op, b, simde__m64, u16, PRIu16)
105
+ #define simde_assert_m64_u32(a, op, b) \
106
+ simde_assert_vec_i(a, op, b, simde__m64, u32, PRIu32)
107
+ #define simde_assert_m64_u64(a, op, b) \
108
+ simde_assert_vec_i(a, op, b, simde__m64, u64, PRIu64)
109
+
110
+ /* Assert that the integer values in each vector are approximately equal. */
111
+ #define simde_assert_vec_i_close(a, b, precision, T, accessor, fmt) do { \
112
+ const T##_private simde_a_ = T##_to_private(a); \
113
+ const T##_private simde_b_ = T##_to_private(b); \
114
+ for (int simde_i_ = 0 ; simde_i_ < HEDLEY_STATIC_CAST(int, (sizeof(simde_a_.accessor) / sizeof(simde_a_.accessor[0]))) ; simde_i_++) { \
115
+ if (!((simde_a_.accessor[simde_i_] <= (simde_b_.accessor[simde_i_] + precision)) && (simde_a_.accessor[simde_i_] >= (simde_b_.accessor[simde_i_] - precision)))) { \
116
+ munit_errorf("assertion failed: " #a "." #accessor "[%d] " SIMDE_ALMOST_EQUAL_TO " " #b "." #accessor "[%d] (%" fmt " " SIMDE_ALMOST_EQUAL_TO " %" fmt ")", \
117
+ simde_i_, simde_i_, simde_a_.accessor[simde_i_], simde_b_.accessor[simde_i_]); \
118
+ } \
119
+ } \
120
+ } while(0)
121
+
122
+ #define simde_assert_m64_i8_close(a, b, precision) \
123
+ simde_assert_vec_i_close(a, b, precision, simde__m64, i8, PRId8)
124
+ #define simde_assert_m64_i16_close(a, b, precision) \
125
+ simde_assert_vec_i_close(a, b, precision, simde__m64, i16, PRId16)
126
+ #define simde_assert_m64_i32_close(a, b, precision) \
127
+ simde_assert_vec_i_close(a, b, precision, simde__m64, i32, PRId32)
128
+ #define simde_assert_m64_i64_close(a, b, precision) \
129
+ simde_assert_vec_i_close(a, b, precision, simde__m64, i64, PRId64)
130
+ #define simde_assert_m64_u8_close(a, b, precision) \
131
+ simde_assert_vec_i_close(a, b, precision, simde__m64, u8, PRIu8)
132
+ #define simde_assert_m64_u16_close(a, b, precision) \
133
+ simde_assert_vec_i_close(a, b, precision, simde__m64, u16, PRIu16)
134
+ #define simde_assert_m64_u32_close(a, b, precision) \
135
+ simde_assert_vec_i_close(a, b, precision, simde__m64, u32, PRIu32)
136
+ #define simde_assert_m64_u64_close(a, b, precision) \
137
+ simde_assert_vec_i_close(a, b, precision, simde__m64, u64, PRIu64)
138
+ #define simde_assert_m128i_i8_close(a, b, precision) \
139
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, i8, PRId8)
140
+ #define simde_assert_m128i_i16_close(a, b, precision) \
141
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, i16, PRId16)
142
+ #define simde_assert_m128i_i32_close(a, b, precision) \
143
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, i32, PRId32)
144
+ #define simde_assert_m128i_i64_close(a, b, precision) \
145
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, i64, PRId64)
146
+ #define simde_assert_m128i_u8_close(a, b, precision) \
147
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, u8, PRIu8)
148
+ #define simde_assert_m128i_u16_close(a, b, precision) \
149
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, u16, PRIu16)
150
+ #define simde_assert_m128i_u32_close(a, b, precision) \
151
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, u32, PRIu32)
152
+ #define simde_assert_m128i_u64_close(a, b, precision) \
153
+ simde_assert_vec_i_close(a, b, precision, simde__m128i, u64, PRIu64)
154
+ #define simde_assert_m256i_i8_close(a, b, precision) \
155
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, i8, PRId8)
156
+ #define simde_assert_m256i_i16_close(a, b, precision) \
157
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, i16, PRId16)
158
+ #define simde_assert_m256i_i32_close(a, b, precision) \
159
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, i32, PRId32)
160
+ #define simde_assert_m256i_i64_close(a, b, precision) \
161
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, i64, PRId64)
162
+ #define simde_assert_m256i_u8_close(a, b, precision) \
163
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, u8, PRIu8)
164
+ #define simde_assert_m256i_u16_close(a, b, precision) \
165
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, u16, PRIu16)
166
+ #define simde_assert_m256i_u32_close(a, b, precision) \
167
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, u32, PRIu32)
168
+ #define simde_assert_m256i_u64_close(a, b, precision) \
169
+ simde_assert_vec_i_close(a, b, precision, simde__m256i, u64, PRIu64)
170
+
171
+ HEDLEY_BEGIN_C_DECLS
172
+
173
+ #define SIMDE_TESTS_GENERATE_SUITE_GETTERS(isax) \
174
+ MunitSuite* SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, native, c)(void); \
175
+ MunitSuite* SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, native, cpp)(void); \
176
+ MunitSuite* SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, emul, c)(void); \
177
+ MunitSuite* SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, emul, cpp)(void)
178
+
179
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(mmx);
180
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(sse);
181
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(sse2);
182
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(sse3);
183
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(ssse3);
184
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(sse4_1);
185
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(sse4_2);
186
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(avx);
187
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(fma);
188
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(avx2);
189
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(avx512f);
190
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(avx512bw);
191
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(avx512vl);
192
+ SIMDE_TESTS_GENERATE_SUITE_GETTERS(svml);
193
+
194
+ HEDLEY_END_C_DECLS
195
+
196
+ #endif /* !defined(SIMDE_TESTS_X86_INTERNAL_H) */
@@ -0,0 +1,48 @@
1
+ #include "test-x86.h"
2
+ #include "test-x86-internal.h"
3
+
4
+ #include <stdio.h>
5
+
6
+ #if defined(SIMDE_BUILD_CPP_TESTS)
7
+ #define SUITES_PER_ISAX 4
8
+ #define SET_CHILDREN_FOR_ARCH(isax) \
9
+ children[i++] = *SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, native, c)(); \
10
+ children[i++] = *SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, emul, c)(); \
11
+ children[i++] = *SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, native, cpp)(); \
12
+ children[i++] = *SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, emul, cpp)()
13
+ #else
14
+ #define SUITES_PER_ISAX 2
15
+ #define SET_CHILDREN_FOR_ARCH(isax) \
16
+ children[i++] = *SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, native, c)(); \
17
+ children[i++] = *SIMDE_TESTS_GENERATE_SYMBOL_FULL(suite, SIMDE_TESTS_CURRENT_ARCH, isax, emul, c)()
18
+ #endif
19
+
20
+ MunitSuite*
21
+ simde_tests_x86_get_suite(void) {
22
+ static MunitSuite children[(14 * SUITES_PER_ISAX) + 1];
23
+ static MunitSuite suite = { "/x86", NULL, children, 1, MUNIT_SUITE_OPTION_NONE };
24
+ static const MunitSuite empty = { NULL, NULL, NULL, 1, MUNIT_SUITE_OPTION_NONE };
25
+
26
+ size_t i = 0;
27
+
28
+ SET_CHILDREN_FOR_ARCH(mmx);
29
+ SET_CHILDREN_FOR_ARCH(sse);
30
+ SET_CHILDREN_FOR_ARCH(sse2);
31
+ SET_CHILDREN_FOR_ARCH(sse3);
32
+ SET_CHILDREN_FOR_ARCH(ssse3);
33
+ SET_CHILDREN_FOR_ARCH(sse4_1);
34
+ SET_CHILDREN_FOR_ARCH(sse4_2);
35
+ SET_CHILDREN_FOR_ARCH(avx);
36
+ SET_CHILDREN_FOR_ARCH(fma);
37
+ SET_CHILDREN_FOR_ARCH(avx2);
38
+ SET_CHILDREN_FOR_ARCH(avx512f);
39
+ SET_CHILDREN_FOR_ARCH(avx512bw);
40
+ SET_CHILDREN_FOR_ARCH(avx512vl);
41
+ SET_CHILDREN_FOR_ARCH(svml);
42
+
43
+ children[i++] = empty;
44
+
45
+ munit_assert_size(i, <=, sizeof(children) / sizeof(children[0]));
46
+
47
+ return &suite;
48
+ }
@@ -0,0 +1,8 @@
1
+ #include "../../simde/hedley.h"
2
+ #include "../munit/munit.h"
3
+
4
+ HEDLEY_BEGIN_C_DECLS
5
+
6
+ MunitSuite* simde_tests_x86_get_suite(void);
7
+
8
+ HEDLEY_END_C_DECLS
data/ext/minimap2/main.c CHANGED
@@ -7,8 +7,6 @@
7
7
  #include "mmpriv.h"
8
8
  #include "ketopt.h"
9
9
 
10
- #define MM_VERSION "2.24-r1122"
11
-
12
10
  #ifdef __linux__
13
11
  #include <sys/resource.h>
14
12
  #include <sys/time.h>
@@ -78,6 +76,7 @@ static ko_longopt_t long_options[] = {
78
76
  { "chain-skip-scale",ko_required_argument,351 },
79
77
  { "print-chains", ko_no_argument, 352 },
80
78
  { "no-hash-name", ko_no_argument, 353 },
79
+ { "secondary-seq", ko_no_argument, 354 },
81
80
  { "help", ko_no_argument, 'h' },
82
81
  { "max-intron-len", ko_required_argument, 'G' },
83
82
  { "version", ko_no_argument, 'V' },
@@ -121,7 +120,7 @@ static inline void yes_or_no(mm_mapopt_t *opt, int64_t flag, int long_idx, const
121
120
 
122
121
  int main(int argc, char *argv[])
123
122
  {
124
- const char *opt_str = "2aSDw:k:K:t:r:f:Vv:g:G:I:d:XT:s:x:Hcp:M:n:z:A:B:O:E:m:N:Qu:R:hF:LC:yYPo:e:U:";
123
+ const char *opt_str = "2aSDw:k:K:t:r:f:Vv:g:G:I:d:XT:s:x:Hcp:M:n:z:A:B:O:E:m:N:Qu:R:hF:LC:yYPo:e:U:J:";
125
124
  ketopt_t o = KETOPT_INIT;
126
125
  mm_mapopt_t opt;
127
126
  mm_idxopt_t ipt;
@@ -187,7 +186,12 @@ int main(int argc, char *argv[])
187
186
  else if (c == 'R') rg = o.arg;
188
187
  else if (c == 'h') fp_help = stdout;
189
188
  else if (c == '2') opt.flag |= MM_F_2_IO_THREADS;
190
- else if (c == 'o') {
189
+ else if (c == 'J') {
190
+ int t;
191
+ t = atoi(o.arg);
192
+ if (t == 0) opt.flag |= MM_F_SPLICE_OLD;
193
+ else if (t == 1) opt.flag &= ~MM_F_SPLICE_OLD;
194
+ } else if (c == 'o') {
191
195
  if (strcmp(o.arg, "-") != 0) {
192
196
  if (freopen(o.arg, "wb", stdout) == NULL) {
193
197
  fprintf(stderr, "[ERROR]\033[1;31m failed to write the output to file '%s'\033[0m: %s\n", o.arg, strerror(errno));
@@ -237,6 +241,7 @@ int main(int argc, char *argv[])
237
241
  else if (c == 350) opt.q_occ_frac = atof(o.arg); // --q-occ-frac
238
242
  else if (c == 352) mm_dbg_flag |= MM_DBG_PRINT_CHAIN; // --print-chains
239
243
  else if (c == 353) opt.flag |= MM_F_NO_HASH_NAME; // --no-hash-name
244
+ else if (c == 354) opt.flag |= MM_F_SECONDARY_SEQ; // --secondary-seq
240
245
  else if (c == 330) {
241
246
  fprintf(stderr, "[WARNING] \033[1;31m --lj-min-ratio has been deprecated.\033[0m\n");
242
247
  } else if (c == 314) { // --frag
@@ -261,7 +266,8 @@ int main(int argc, char *argv[])
261
266
  } else if (c == 326) { // --dual
262
267
  yes_or_no(&opt, MM_F_NO_DUAL, o.longidx, o.arg, 0);
263
268
  } else if (c == 347) { // --rmq
264
- yes_or_no(&opt, MM_F_RMQ, o.longidx, o.arg, 1);
269
+ if (o.arg) yes_or_no(&opt, MM_F_RMQ, o.longidx, o.arg, 1);
270
+ else opt.flag |= MM_F_RMQ;
265
271
  } else if (c == 'S') {
266
272
  opt.flag |= MM_F_OUT_CS | MM_F_CIGAR | MM_F_OUT_CS_LONG;
267
273
  if (mm_verbose >= 2)
@@ -322,7 +328,7 @@ int main(int argc, char *argv[])
322
328
  fprintf(fp_help, " -H use homopolymer-compressed k-mer (preferrable for PacBio)\n");
323
329
  fprintf(fp_help, " -k INT k-mer size (no larger than 28) [%d]\n", ipt.k);
324
330
  fprintf(fp_help, " -w INT minimizer window size [%d]\n", ipt.w);
325
- fprintf(fp_help, " -I NUM split index for every ~NUM input bases [4G]\n");
331
+ fprintf(fp_help, " -I NUM split index for every ~NUM input bases [8G]\n");
326
332
  fprintf(fp_help, " -d FILE dump index to FILE []\n");
327
333
  fprintf(fp_help, " Mapping:\n");
328
334
  fprintf(fp_help, " -f FLOAT filter out top FLOAT fraction of repetitive minimizers [%g]\n", opt.mid_occ_frac);
@@ -344,6 +350,7 @@ int main(int argc, char *argv[])
344
350
  fprintf(fp_help, " -z INT[,INT] Z-drop score and inversion Z-drop score [%d,%d]\n", opt.zdrop, opt.zdrop_inv);
345
351
  fprintf(fp_help, " -s INT minimal peak DP alignment score [%d]\n", opt.min_dp_max);
346
352
  fprintf(fp_help, " -u CHAR how to find GT-AG. f:transcript strand, b:both strands, n:don't match GT-AG [n]\n");
353
+ fprintf(fp_help, " -J INT splice mode. 0: original minimap2 model; 1: miniprot model [1]\n");
347
354
  fprintf(fp_help, " Input/Output:\n");
348
355
  fprintf(fp_help, " -a output in the SAM format (PAF by default)\n");
349
356
  fprintf(fp_help, " -o FILE output alignments to FILE [stdout]\n");
data/ext/minimap2/map.c CHANGED
@@ -10,11 +10,6 @@
10
10
  #include "bseq.h"
11
11
  #include "khash.h"
12
12
 
13
- struct mm_tbuf_s {
14
- void *km;
15
- int rep_len, frag_gap;
16
- };
17
-
18
13
  mm_tbuf_t *mm_tbuf_init(void)
19
14
  {
20
15
  mm_tbuf_t *b;
@@ -5,41 +5,45 @@
5
5
  #include <stdio.h>
6
6
  #include <sys/types.h>
7
7
 
8
- #define MM_F_NO_DIAG 0x001 // no exact diagonal hit
9
- #define MM_F_NO_DUAL 0x002 // skip pairs where query name is lexicographically larger than target name
10
- #define MM_F_CIGAR 0x004
11
- #define MM_F_OUT_SAM 0x008
12
- #define MM_F_NO_QUAL 0x010
13
- #define MM_F_OUT_CG 0x020
14
- #define MM_F_OUT_CS 0x040
15
- #define MM_F_SPLICE 0x080 // splice mode
16
- #define MM_F_SPLICE_FOR 0x100 // match GT-AG
17
- #define MM_F_SPLICE_REV 0x200 // match CT-AC, the reverse complement of GT-AG
18
- #define MM_F_NO_LJOIN 0x400
19
- #define MM_F_OUT_CS_LONG 0x800
20
- #define MM_F_SR 0x1000
21
- #define MM_F_FRAG_MODE 0x2000
22
- #define MM_F_NO_PRINT_2ND 0x4000
23
- #define MM_F_2_IO_THREADS 0x8000
24
- #define MM_F_LONG_CIGAR 0x10000
25
- #define MM_F_INDEPEND_SEG 0x20000
26
- #define MM_F_SPLICE_FLANK 0x40000
27
- #define MM_F_SOFTCLIP 0x80000
28
- #define MM_F_FOR_ONLY 0x100000
29
- #define MM_F_REV_ONLY 0x200000
30
- #define MM_F_HEAP_SORT 0x400000
31
- #define MM_F_ALL_CHAINS 0x800000
32
- #define MM_F_OUT_MD 0x1000000
33
- #define MM_F_COPY_COMMENT 0x2000000
34
- #define MM_F_EQX 0x4000000 // use =/X instead of M
35
- #define MM_F_PAF_NO_HIT 0x8000000 // output unmapped reads to PAF
36
- #define MM_F_NO_END_FLT 0x10000000
37
- #define MM_F_HARD_MLEVEL 0x20000000
38
- #define MM_F_SAM_HIT_ONLY 0x40000000
8
+ #define MM_VERSION "2.25-r1173"
9
+
10
+ #define MM_F_NO_DIAG (0x001LL) // no exact diagonal hit
11
+ #define MM_F_NO_DUAL (0x002LL) // skip pairs where query name is lexicographically larger than target name
12
+ #define MM_F_CIGAR (0x004LL)
13
+ #define MM_F_OUT_SAM (0x008LL)
14
+ #define MM_F_NO_QUAL (0x010LL)
15
+ #define MM_F_OUT_CG (0x020LL)
16
+ #define MM_F_OUT_CS (0x040LL)
17
+ #define MM_F_SPLICE (0x080LL) // splice mode
18
+ #define MM_F_SPLICE_FOR (0x100LL) // match GT-AG
19
+ #define MM_F_SPLICE_REV (0x200LL) // match CT-AC, the reverse complement of GT-AG
20
+ #define MM_F_NO_LJOIN (0x400LL)
21
+ #define MM_F_OUT_CS_LONG (0x800LL)
22
+ #define MM_F_SR (0x1000LL)
23
+ #define MM_F_FRAG_MODE (0x2000LL)
24
+ #define MM_F_NO_PRINT_2ND (0x4000LL)
25
+ #define MM_F_2_IO_THREADS (0x8000LL)
26
+ #define MM_F_LONG_CIGAR (0x10000LL)
27
+ #define MM_F_INDEPEND_SEG (0x20000LL)
28
+ #define MM_F_SPLICE_FLANK (0x40000LL)
29
+ #define MM_F_SOFTCLIP (0x80000LL)
30
+ #define MM_F_FOR_ONLY (0x100000LL)
31
+ #define MM_F_REV_ONLY (0x200000LL)
32
+ #define MM_F_HEAP_SORT (0x400000LL)
33
+ #define MM_F_ALL_CHAINS (0x800000LL)
34
+ #define MM_F_OUT_MD (0x1000000LL)
35
+ #define MM_F_COPY_COMMENT (0x2000000LL)
36
+ #define MM_F_EQX (0x4000000LL) // use =/X instead of M
37
+ #define MM_F_PAF_NO_HIT (0x8000000LL) // output unmapped reads to PAF
38
+ #define MM_F_NO_END_FLT (0x10000000LL)
39
+ #define MM_F_HARD_MLEVEL (0x20000000LL)
40
+ #define MM_F_SAM_HIT_ONLY (0x40000000LL)
39
41
  #define MM_F_RMQ (0x80000000LL)
40
42
  #define MM_F_QSTRAND (0x100000000LL)
41
43
  #define MM_F_NO_INV (0x200000000LL)
42
44
  #define MM_F_NO_HASH_NAME (0x400000000LL)
45
+ #define MM_F_SPLICE_OLD (0x800000000LL)
46
+ #define MM_F_SECONDARY_SEQ (0x1000000000LL) //output SEQ field for seqondary alignments using hard clipping
43
47
 
44
48
  #define MM_I_HPC 0x1
45
49
  #define MM_I_NO_SEQ 0x2
@@ -189,6 +193,11 @@ typedef struct {
189
193
  } mm_idx_reader_t;
190
194
 
191
195
  // memory buffer for thread-local storage during mapping
196
+ struct mm_tbuf_s {
197
+ void *km;
198
+ int rep_len, frag_gap;
199
+ };
200
+
192
201
  typedef struct mm_tbuf_s mm_tbuf_t;
193
202
 
194
203
  // global variables
@@ -1,4 +1,4 @@
1
- .TH minimap2 1 "18 December 2021" "minimap2-2.24 (r1122)" "Bioinformatics tools"
1
+ .TH minimap2 1 "25 April 2023" "minimap2-2.25 (r1173)" "Bioinformatics tools"
2
2
  .SH NAME
3
3
  .PP
4
4
  minimap2 - mapping and alignment between collections of DNA sequences
@@ -79,6 +79,19 @@ Minimizer k-mer length [15]
79
79
  .BI -w \ INT
80
80
  Minimizer window size [10]. A minimizer is the smallest k-mer
81
81
  in a window of w consecutive k-mers.
82
+ .TP
83
+ .BI -j \ INT
84
+ Syncmer submer size [10]. Option
85
+ .B -j
86
+ and
87
+ .B -w
88
+ will override each: if
89
+ .B -w
90
+ is applied after
91
+ .BR -j ,
92
+ .B -j
93
+ will have no effect, and vice versa.
94
+
82
95
  .TP
83
96
  .B -H
84
97
  Use homopolymer-compressed (HPC) minimizers. An HPC sequence is constructed by
@@ -88,16 +101,17 @@ on the HPC sequence.
88
101
  .BI -I \ NUM
89
102
  Load at most
90
103
  .I NUM
91
- target bases into RAM for indexing [4G]. If there are more than
104
+ target bases into RAM for indexing [8G]. If there are more than
92
105
  .I NUM
93
106
  bases in
94
107
  .IR target.fa ,
95
108
  minimap2 needs to read
96
109
  .I query.fa
97
- multiple times to map it against each batch of target sequences.
110
+ multiple times to map it against each batch of target sequences. This would create a multi-part index.
98
111
  .I NUM
99
112
  may be ending with k/K/m/M/g/G. NB: mapping quality is incorrect given a
100
- multi-part index.
113
+ multi-part index. See also option
114
+ .BR --split-prefix .
101
115
  .TP
102
116
  .B --idx-no-seq
103
117
  Don't store target sequences in the index. It saves disk space and memory but
@@ -587,7 +601,7 @@ Up to 20% sequence divergence.
587
601
  .B splice
588
602
  Long-read spliced alignment
589
603
  .RB ( -k15
590
- .B -w5 --splice -g2k -G200k -A1 -B2 -O2,32 -E1,0 -b0 -C9 -z200 -ub --junc-bonus=9 --cap-sw-mem=0
604
+ .B -w5 --splice -g2k -G200k -A1 -B2 -O2,32 -E1,0 -C9 -z200 -ub --junc-bonus=9 --cap-sw-mem=0
591
605
  .BR --splice-flank=yes ).
592
606
  In the splice mode, 1) long deletions are taken as introns and represented as
593
607
  the