From 490e9ff4ffa7f09b6dd50403eeafddb344d05730 Mon Sep 17 00:00:00 2001 From: Yuelong Chen Date: Tue, 1 Apr 2025 21:43:19 +0800 Subject: [PATCH 1/2] add junc_bed and uf --- python/cmappy.pxd | 1 + python/mappy.pyx | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/python/cmappy.pxd b/python/cmappy.pxd index 38432746..9765e5b0 100644 --- a/python/cmappy.pxd +++ b/python/cmappy.pxd @@ -94,6 +94,7 @@ cdef extern from "minimap.h": void mm_idx_reader_close(mm_idx_reader_t *r) void mm_idx_destroy(mm_idx_t *mi) void mm_mapopt_update(mm_mapopt_t *opt, const mm_idx_t *mi) + void mm_idx_bed_read(mm_idx_t *mi, const char *fn, int read_junc) int mm_idx_index_name(mm_idx_t *mi) diff --git a/python/mappy.pyx b/python/mappy.pyx index 41e30d25..fa4a98f6 100644 --- a/python/mappy.pyx +++ b/python/mappy.pyx @@ -113,12 +113,16 @@ cdef class Aligner: cdef cmappy.mm_idxopt_t idx_opt cdef cmappy.mm_mapopt_t map_opt - def __cinit__(self, fn_idx_in=None, preset=None, k=None, w=None, min_cnt=None, min_chain_score=None, min_dp_score=None, bw=None, bw_long=None, best_n=None, n_threads=3, fn_idx_out=None, max_frag_len=None, extra_flags=None, seq=None, scoring=None, sc_ambi=None, max_chain_skip=None): + + def __cinit__(self, fn_idx_in=None, preset=None, uf=None ,k=None, w=None, min_cnt=None, min_chain_score=None, min_dp_score=None, bw=None, bw_long=None, best_n=None, n_threads=3, fn_idx_out=None, max_frag_len=None, extra_flags=None, seq=None, scoring=None, sc_ambi=None, max_chain_skip=None, junc_bed=None): self._idx = NULL cmappy.mm_set_opt(NULL, &self.idx_opt, &self.map_opt) # set the default options if preset is not None: cmappy.mm_set_opt(str.encode(preset), &self.idx_opt, &self.map_opt) # apply preset self.map_opt.flag |= 4 # always perform alignment + if uf is not None: + self.map_opt.flag |= 0x100 + self.map_opt.flag &= ~0x200 self.idx_opt.batch_size = 0x7fffffffffffffffL # always build a uni-part index if k is not None: self.idx_opt.k = k if w is not None: self.idx_opt.w = w @@ -152,6 +156,7 @@ cdef class Aligner: self._idx = cmappy.mm_idx_reader_read(r, n_threads) # NB: ONLY read the first part cmappy.mm_idx_reader_close(r) cmappy.mm_mapopt_update(&self.map_opt, self._idx) + if junc_bed is not None: cmappy.mm_idx_bed_read(self._idx, str.encode(junc_bed), 1) cmappy.mm_idx_index_name(self._idx) else: self._idx = cmappy.mappy_idx_seq(self.idx_opt.w, self.idx_opt.k, self.idx_opt.flag&1, self.idx_opt.bucket_bits, str.encode(seq), len(seq)) From 30a4bd02d2b3789d0e131fdc14ae28c922028bc8 Mon Sep 17 00:00:00 2001 From: Yuelong Chen Date: Tue, 1 Apr 2025 21:45:24 +0800 Subject: [PATCH 2/2] Update setup.py