mirror of
https://github.com/chhylp123/hifiasm.git
synced 2026-09-28 02:28:12 +08:00
r942 for temp release
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@
|
||||
#include <pthread.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define HA_VERSION "0.25.1-r933"
|
||||
#define HA_VERSION "0.25.1-r942"
|
||||
|
||||
#define VERBOSE 0
|
||||
|
||||
|
||||
+1107
-29
File diff suppressed because it is too large
Load Diff
@@ -1459,6 +1459,8 @@ uint64_t gen_hc_r_alin_re(overlap_region* z, Candidates_list *cl, char* qstr, ui
|
||||
uint64_t gen_hc_r_alin_self(overlap_region* z, Candidates_list *cl, char* qstr, uint64_t ql, char* tstr, uint64_t tl, bit_extz_t *exz, overlap_region *aux_o, double e_rate, int64_t wl, int64_t rid, int64_t khit, int64_t move_gap, asg16_v* buf, asg16_v* scc);
|
||||
void rphase_hc(overlap_region_alloc* ol, All_reads *rref, haplotype_evdience_alloc* hp, UC_Read* qu, asg16_v *qc0, UC_Read* tu, kv_ul_ov_t *c_idx, asg64_v* idx, asg64_v* buf, int64_t bd, int64_t wl, int64_t ql, uint8_t occ_thres/**, uint8_t is_dbg**/, uint64_t rid, uint64_t hpc_len, uint64_t std_bs, Chain_Data *dp, asg8_v *q8, asg8_v *t8, uint8_t lindel, uint64_t tcut, uint64_t site_sc, int64_t h0_w, asg32_v *b32,
|
||||
int64_t hap_cov_match, int64_t hap_cov_unmatch, int64_t het_cov_a, int64_t hom_cov_a, int64_t n_hap, double hf_rate, overlap_region *rchn, int64_t rref_len, int64_t flag_hf_ov_cut, int64_t min_re_cut, double min_re_rt, int64_t min_hpc_re_cut, double min_hpc_re_rt, int8_t is_hpc_flt);
|
||||
void rphase_hc_hpc(overlap_region_alloc* ol, All_reads *rref, haplotype_evdience_alloc* hp, UC_Read* qu, asg16_v *qc0, UC_Read* tu, kv_ul_ov_t *c_idx, asg64_v* idx, asg64_v* buf, int64_t bd, int64_t wl, int64_t ql, uint8_t occ_thres/**, uint8_t is_dbg**/, uint64_t rid, uint64_t hpc_len, uint64_t std_bs, Chain_Data *dp, asg8_v *q8, asg8_v *t8, uint8_t lindel, uint64_t tcut, uint64_t site_sc, int64_t h0_w, asg32_v *b32,
|
||||
int64_t hap_cov_match, int64_t hap_cov_unmatch, int64_t het_cov_a, int64_t hom_cov_a, int64_t n_hap, double hf_rate, overlap_region *rchn, int64_t rref_len, int64_t flag_hf_ov_cut, int64_t min_re_cut, double min_re_rt, int64_t min_hpc_re_cut, double min_hpc_re_rt, int8_t is_hpc_flt);
|
||||
void set_exact_exz(bit_extz_t *exz, int64_t qs, int64_t qe, int64_t ts, int64_t te);
|
||||
void push_alnw(overlap_region *aux_o, bit_extz_t *exz);
|
||||
void cal_exz_global(char *pstr, int32_t pn, char *tstr, int32_t tn, int32_t thre, bit_extz_t *ez);
|
||||
@@ -1472,6 +1474,9 @@ inline uint64_t exact_ec_check(char *qstr, uint64_t ql, char *tstr, uint64_t tl,
|
||||
}
|
||||
// void est_rep_err_rate(overlap_region_alloc* ol, asg64_v *ix, kv_ul_ov_t *c_idx, int64_t ql, int64_t wl, uint64_t *ou_a, uint64_t min_dp, int64_t ph_cov, uint8_t flg_ov, double flg_ov_sec_rate, double flg_cov_rate, uint64_t *ave_e, uint64_t *bd_e, uint64_t *tot_cov);
|
||||
void est_rep_err_rate(overlap_region_alloc* ol, asg64_v *ix, kv_ul_ov_t *c_idx, int64_t ql, int64_t wl, uint64_t *ou_a, uint64_t min_dp, int64_t ph_cov, uint8_t flg_ov, double flg_ov_sec_rate, double flg_cov_rate, uint64_t *ave_e, uint64_t *bd_e, uint64_t *tot_cov);
|
||||
// void fflat_lhpc_chn(overlap_region_alloc* ol, All_reads *rref, overlap_region *aux, UC_Read* qu, UC_Read* tu, kv_ul_ov_t *c_idx, asg64_v* idx, asg64_v* buf, Candidates_list *cl, int64_t hpc_rmax, int64_t hpc_cutoff, anchor1_t_v *hchn);
|
||||
void fflat_lhpc_chn(overlap_region_alloc* ol, int64_t qid, All_reads *rref, overlap_region *aux, UC_Read* qu, UC_Read* tu, kv_ul_ov_t *c_idx, asg64_v* idx, asg64_v* buf, Candidates_list *cl, int64_t hpc_rmax, int64_t hpc_cutoff, anchor1_t_v *hchn, double bw_rate);
|
||||
|
||||
#define ovlp_id(x) ((x).tn)
|
||||
#define ovlp_min_wid(x) ((x).ts)
|
||||
#define ovlp_max_wid(x) ((x).te)
|
||||
|
||||
+8
-5
@@ -39951,12 +39951,14 @@ long long bubble_dist, int read_graph, R_to_U* ruIndex, asg_t **sg_ptr,
|
||||
ma_sub_t **coverage_cut_ptr, uint8_t *cmk, int debug_g)
|
||||
{
|
||||
// const char *dbg_ids[] = {
|
||||
// "6152e53b-a2ec-4f23-898f-462c9dee8e0f",
|
||||
// "c5bbf86e-3146-4757-9882-55a5baebf770",
|
||||
// "19af141e-d049-4229-a8b4-58aab021cca1",
|
||||
// "fb9370c5-2932-468c-a431-c141ca2d3787",
|
||||
// "e36a655f-984d-4f1d-8092-4404a7f99313",
|
||||
// };
|
||||
// const uint64_t dbg_ids_n[] = {
|
||||
// 3177240,
|
||||
// 2198541,
|
||||
// 3163025,
|
||||
// 3727972,
|
||||
// 3567631
|
||||
// };
|
||||
|
||||
// hc_dbg_prt_ma_hit_t(dbg_ids, sizeof(dbg_ids)/sizeof(dbg_ids[0]), dbg_ids_n, sizeof(dbg_ids_n)/sizeof(dbg_ids_n[0]), "test_0", sources, NULL, NULL, NULL);
|
||||
@@ -40069,12 +40071,13 @@ ma_sub_t **coverage_cut_ptr, uint8_t *cmk, int debug_g)
|
||||
debug_gfa:;
|
||||
}
|
||||
**/
|
||||
// hc_dbg_prt_ma_hit_t(NULL, 0, NULL, 0, "clen_z", sources, ruIndex, coverage_cut, sg);
|
||||
// hc_dbg_prt_ma_hit_t(dbg_ids, sizeof(dbg_ids)/sizeof(dbg_ids[0]), dbg_ids_n, sizeof(dbg_ids_n)/sizeof(dbg_ids_n[0]), "clen_z", sources, ruIndex, coverage_cut, sg);
|
||||
|
||||
gen_ug_opt_t(&uopt, sources, reverse_sources, max_hang_length, mini_overlap_length, gap_fuzz, min_dp, readLen, coverage_cut, ruIndex,
|
||||
(asm_opt.max_short_tip*2), 0.15, 3, 0.05, 0.9, &b_mask_t, te);
|
||||
ul_clean_gfa(&uopt, sg, sources, reverse_sources, ruIndex, clean_round, min_ovlp_drop_ratio, max_ovlp_drop_ratio,
|
||||
0.6, asm_opt.max_short_tip, gap_fuzz, &b_mask_t, !!asm_opt.ar, ha_opt_triobin(&asm_opt), UL_COV_THRES, cmk, o_file);
|
||||
// exit(1);
|
||||
/**
|
||||
///@brief debug
|
||||
if (asm_opt.flag & HA_F_VERBOSE_GFA) {
|
||||
|
||||
+20
-9
@@ -13,13 +13,6 @@
|
||||
#define CH_OCC 4
|
||||
#define CH_SC 16
|
||||
|
||||
typedef struct { // this struct is not strictly necessary; we can use k_mer_pos instead, with modifications
|
||||
uint64_t srt;
|
||||
uint32_t self_off;
|
||||
uint32_t other_off;
|
||||
uint32_t cnt;
|
||||
} anchor1_t;
|
||||
|
||||
#define an_key1(a) ((a).srt)
|
||||
#define an_key2(a) ((a).self_off)
|
||||
#define an_key3(a) ((a).other_off)
|
||||
@@ -83,6 +76,24 @@ uint64_t sf##_mem(const HType *ab){\
|
||||
HA_ABUF_INIT(ha_abuf_s, ha_mz1_t, seed1_t, ha_abuf)
|
||||
HA_ABUF_INIT(ha_abufl_s, ha_mzl_t, seedl_t, ha_abufl)
|
||||
|
||||
void cp_anchor1_t_v(anchor1_t_v *z, ha_abuf_t *p, uint8_t p2z)
|
||||
{
|
||||
if(p2z) {
|
||||
z->a = p->a; z->n = p->n_a; z->m = p->m_a;
|
||||
} else {
|
||||
p->a = z->a; p->n_a = z->n; p->m_a = z->m;
|
||||
}
|
||||
}
|
||||
|
||||
void srt_radix_sort_ha_an1(anchor1_t *a, uint64_t a_n, uint8_t is_other_offset)
|
||||
{
|
||||
if(!is_other_offset) {
|
||||
radix_sort_ha_an1(a, a + a_n);
|
||||
} else {
|
||||
radix_sort_ha_an3(a, a + a_n);
|
||||
}
|
||||
}
|
||||
|
||||
int ha_ov_type(const overlap_region *r, uint32_t len)
|
||||
{
|
||||
if (r->x_pos_s == 0 && r->x_pos_e == len - 1) return 2; // contained in a longer read
|
||||
@@ -4141,12 +4152,12 @@ void gen_self_global_chain(ha_abuf_t *ab, Candidates_list *cl, uint32_t rid, uin
|
||||
mz1_ha_sketch(ts, tl, mz_w, mz_k, 0, !(asm_opt.flag & HA_F_NO_HPC), &ab->mz, ha_flt_tab, asm_opt.mz_sample_dist, k_flag, dbg_ct, NULL, -1, asm_opt.dp_min_len, -1, sp, asm_opt.mz_rewin, 0, NULL);
|
||||
|
||||
kv_resize(uint64_t, *ix, ab->mz.n);
|
||||
for (k = 0; k < rn; k++) {
|
||||
for (k = 0; k < rn; k++) {///minimizers of q
|
||||
ix->a[k] = ab->mz.a[k].x;
|
||||
ix->a[k] <<= 32; ix->a[k] |= k;
|
||||
}
|
||||
|
||||
for (; k < ab->mz.n; k++) {
|
||||
for (; k < ab->mz.n; k++) {///minimizers of t
|
||||
ix->a[k] = ab->mz.a[k].x;
|
||||
ix->a[k] <<= 32; ix->a[k] |= (k-rn);
|
||||
}
|
||||
|
||||
+27
-8
@@ -26,6 +26,7 @@
|
||||
|
||||
void p_ec_lchain(ha_abufl_t *ab, uint32_t rid, char* rs, uint64_t rl, uint64_t mz_w, uint64_t mz_k, ul_idx_t *uref, overlap_region_alloc *ol, Candidates_list *cl, double bw_thres,
|
||||
int apend_be, kvec_t_u8_warp* k_flag, kvec_t_u64_warp* dbg_ct, st_mt_t *sp, uint32_t *high_occ, uint32_t *low_occ, uint32_t is_accurate, uint32_t gen_off, int64_t mcopy_num, double mcopy_rate, uint32_t mcopy_khit_cut);
|
||||
void cp_anchor1_t_v(anchor1_t_v *z, ha_abuf_t *p, uint8_t p2z);
|
||||
|
||||
typedef struct {
|
||||
uint64_t fbs, faln;
|
||||
@@ -4393,15 +4394,15 @@ void stderr_phase_ovlp(overlap_region_alloc* ol)
|
||||
int64_t on = ol->length, k; overlap_region *z;
|
||||
if(!on) return;
|
||||
uint64_t qry_n = 0, rid, ref_n, qid;
|
||||
rid = ol->list[0].x_id; ref_n = Get_NAME_LENGTH(R_INF, rid);
|
||||
rid = ol->list[0].x_id; ref_n = Get_READ_LENGTH(R_INF, rid);
|
||||
|
||||
for (k = 0; k < on; k++) {
|
||||
z = &(ol->list[k]); qid = ol->list[k].y_id;
|
||||
qry_n = Get_NAME_LENGTH(R_INF, qid);
|
||||
qry_n = Get_READ_LENGTH(R_INF, qid);
|
||||
|
||||
fprintf(stderr, "%.*s(qid::%lu)\tql::%lu\tq::[%u,\t%u)\t%c\t%.*s(tid::%lu)\ttl::%lu\tt::[%u,\t%u)\ttrans::%u\terr::%u\n",
|
||||
fprintf(stderr, "%.*s(qid::%lu)\tql::%lu\tq::[%u,\t%u)\t%c\t%.*s(tid::%lu)\ttl::%lu\tt::[%u,\t%u)\ttrans::%u\terr::%u\taln::%u\n",
|
||||
(int32_t)Get_NAME_LENGTH(R_INF, rid), Get_NAME(R_INF, rid), rid, ref_n, z->x_pos_s, z->x_pos_e + 1, "+-"[z->y_pos_strand],
|
||||
(int32_t)Get_NAME_LENGTH(R_INF, qid), Get_NAME(R_INF, qid), qid, qry_n, z->y_pos_s, z->y_pos_e + 1, ((z->is_match==1)?(0):(1)), z->non_homopolymer_errors);
|
||||
(int32_t)Get_NAME_LENGTH(R_INF, qid), Get_NAME(R_INF, qid), qid, qry_n, z->y_pos_s, z->y_pos_e + 1, ((z->is_match==1)?(0):(1)), z->non_homopolymer_errors, ((z->is_match==0)?(0):(1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4948,7 +4949,7 @@ static void worker_hap_ec(void *data, long i, int tid)
|
||||
// if(i != 3799659) return;
|
||||
// if(i !=3373007) return;
|
||||
// if(i != 508213) return;
|
||||
// if(i != 3177240) return;
|
||||
// if(i != 4088285) return;
|
||||
// if((i != 733166) && (i != 858708) && (i != 858732) && (i != 859819) && (i != 859899) && (i != 863486) && (i != 872165) && (i != 899887) && (i != 902298) &&
|
||||
// (i != 906808) && (i != 946173) && (i != 952685) && (i != 983977) && (i != 1000227) && (i != 1011228) && (i != 1042858) && (i != 1045860) && (i != 1118558) &&
|
||||
// (i != 1143886) && (i != 1155956) && (i != 1159490) && (i != 1179151) && (i != 1180199) && (i != 1230524) && (i != 1232338) && (i != 1244031) && (i != 1268467) &&
|
||||
@@ -5106,6 +5107,7 @@ static void worker_hap_ec(void *data, long i, int tid)
|
||||
|
||||
copy_asg_arr(buf0, b->sp);
|
||||
//site_sc: r765 -> r766: 1 -> 0
|
||||
/**rphase_hc_hpc**/
|
||||
rphase_hc(&b->olist, &R_INF, &b->hap, &b->self_read, &(scb.a[i]), &b->ovlp_read, &b->pidx, &b->v64, &buf0, 0, WINDOW_MAX_SIZE, b->self_read.length, 1/**, 0**/, i, (asm_opt.is_ont)?HPC_PL:0, asm_opt.is_ont, ((asm_opt.is_ont)?&(b->clist.chainDP):NULL), ((asm_opt.is_sc)?&(b->v8q):NULL), ((asm_opt.is_sc)?&(b->v8t):NULL)/**&(b->v8t)**/, (asm_opt.is_ont)?1:0, ((uint64_t)-1), 0, HC0_W, &b->v32,
|
||||
asm_opt.s_hap_cov, asm_opt.infor_cov, het_a, hom_a, asm_opt.polyploidy, -1.0, rcc, rl0, ((asm_opt.post_syn)?(5):(INT64_MAX)),
|
||||
asm_opt.recurrent_err_normal_min, asm_opt.recurrent_err_normal_rat, asm_opt.recurrent_err_hpc_min, asm_opt.recurrent_err_hpc_rat, asm_opt.recurrent_err_test);
|
||||
@@ -6049,7 +6051,7 @@ static void select_sync_ovlp(void *data, long i, int tid)
|
||||
static void worker_hap_ec_hybrid(void *data, long i, int tid)
|
||||
{
|
||||
ec_ovec_buf_t0 *b = &(((ec_ovec_buf_t*)data)->a[tid]);
|
||||
uint32_t high_occ = asm_opt.hom_cov * (2.0 - HA_KMER_GOOD_RATIO); int64_t het_a, hom_a;
|
||||
uint32_t high_occ = asm_opt.hom_cov * (2.0 - HA_KMER_GOOD_RATIO); int64_t het_a, hom_a; ///anchor1_t_v hchn;
|
||||
uint32_t low_occ = asm_opt.hom_cov * HA_KMER_GOOD_RATIO; double bw_h, bw_l, e_h, e_l; int64_t rl0 = -1;
|
||||
gen_hc_aln_t ez; overlap_region *aux_o = NULL, *rse_o = NULL, *rcc = NULL; asg64_v buf0, buf1; uint64_t qlen = 0, qw = 0, qid = i; //uint64_t sk[2], ek[2], fn, qid = i, nec;
|
||||
if(qid < R_INF.tqn) {///ont
|
||||
@@ -6067,10 +6069,13 @@ static void worker_hap_ec_hybrid(void *data, long i, int tid)
|
||||
// if(i != 3646295) return;
|
||||
// if(i != 3373007) return;
|
||||
// if(i != 508213) return;
|
||||
// if(i != 3177240) return;
|
||||
// if(i != 508213) return;
|
||||
// if(i != 641038) return;
|
||||
// if(i != 2643471) return;
|
||||
// if(i != 717328) return;
|
||||
// e_h = e_l = 0.1;///this is for debug
|
||||
|
||||
// if(i != 10) return;
|
||||
// if(i != 64) return;
|
||||
|
||||
// if((i%16) != 0) return;
|
||||
// if(i != 11206) return;
|
||||
@@ -6156,6 +6161,13 @@ static void worker_hap_ec_hybrid(void *data, long i, int tid)
|
||||
|
||||
///for debug indel
|
||||
// prt_ovlp_sam(&b->olist, &b->ovlp_read, b->self_read.seq, b->self_read.length);
|
||||
/**
|
||||
cp_anchor1_t_v(&hchn, b->ab, 1);
|
||||
fflat_lhpc_chn(&b->olist, i, &R_INF, aux_o, &b->self_read, &b->ovlp_read, &b->pidx, &b->v64, &buf0, &b->clist, 5, 4, &hchn, bw_h);
|
||||
cp_anchor1_t_v(&hchn, b->ab, 0);
|
||||
**/
|
||||
|
||||
|
||||
|
||||
if(scb.a[i].n && asm_opt.realn_raw) {
|
||||
regen_scb(b->ab, &b->clist, i, &(scb.a[i]), &b->self_read, &b->ovlp_read, &b->v64, asm_opt.mz_win, asm_opt.k_mer_length, NULL, NULL, &(b->sp), &high_occ, &low_occ,
|
||||
@@ -6163,6 +6175,7 @@ static void worker_hap_ec_hybrid(void *data, long i, int tid)
|
||||
}
|
||||
|
||||
copy_asg_arr(buf0, b->sp);
|
||||
/**rphase_hc_hpc**/
|
||||
rphase_hc(&b->olist, &R_INF, &b->hap, &b->self_read, &(scb.a[i]), &b->ovlp_read, &b->pidx, &b->v64, &buf0, 0, WINDOW_MAX_SIZE, b->self_read.length, 1/**, 0**/, i, (asm_opt.is_ont)?HPC_PL:0, asm_opt.is_ont, ((asm_opt.is_ont)?&(b->clist.chainDP):NULL), /**((asm_opt.is_sc)?&(b->v8q):NULL)**/&(b->v8q), ((asm_opt.is_sc)?&(b->v8t):NULL), (asm_opt.is_ont)?1:0, R_INF.tqn, 0/**1**/, HC0_W, &b->v32,
|
||||
asm_opt.s_hap_cov, asm_opt.infor_cov, het_a, hom_a, asm_opt.polyploidy, (((double)R_INF.tr[1])/((double)(R_INF.tr[0] + R_INF.tr[1]))), rcc, rl0, ((asm_opt.post_syn)?(5):(INT64_MAX)),
|
||||
asm_opt.recurrent_err_normal_min, asm_opt.recurrent_err_normal_rat, asm_opt.recurrent_err_hpc_min, asm_opt.recurrent_err_hpc_rat, asm_opt.recurrent_err_test);
|
||||
@@ -6174,6 +6187,12 @@ static void worker_hap_ec_hybrid(void *data, long i, int tid)
|
||||
dedup_chains(&b->olist);
|
||||
|
||||
copy_asg_arr(buf0, b->sp); copy_asg_arr(buf1, b->hap.snp_srt);
|
||||
/**
|
||||
int64_t ncc = wcns_gen(&b->olist, &R_INF, i, &b->self_read, &b->ovlp_read, &b->exz, &b->pidx, &b->v64, &buf0, 0, 512, b->self_read.length, 3, 0.500001, aux_o, &b->v32, &b->cns, 256, i, R_INF.tqn,
|
||||
R_INF.tr[0], R_INF.tr[1], asm_opt.ont_rate, asm_opt.hf_rate, asm_opt.hf_rate_max, &buf1, ((asm_opt.post_syn)?(0):(1)));
|
||||
b->cnt[1] += ncc;
|
||||
fprintf(stderr, "id::%ld\tncc::%ld\n", (int64_t)i, ncc);
|
||||
**/
|
||||
b->cnt[1] += wcns_gen(&b->olist, &R_INF, i, &b->self_read, &b->ovlp_read, &b->exz, &b->pidx, &b->v64, &buf0, 0, 512, b->self_read.length, 3, 0.500001, aux_o, &b->v32, &b->cns, 256, i, R_INF.tqn,
|
||||
R_INF.tr[0], R_INF.tr[1], asm_opt.ont_rate, asm_opt.hf_rate, asm_opt.hf_rate_max, &buf1, ((asm_opt.post_syn)?(0):(1)));
|
||||
copy_asg_arr(b->sp, buf0); copy_asg_arr(b->hap.snp_srt, buf1);
|
||||
|
||||
+33
-7
@@ -449,13 +449,16 @@ void hc_dbg_prt_ma_hit_t(const char *ids0[], uint64_t n0, const uint64_t iids0[]
|
||||
|
||||
///"21b83ce9-9b94-445d-93b0-b9e83aaa4326",///tip3
|
||||
|
||||
"6f240062-2451-4212-a22d-abecc73ae0d9",///tip4->63a321ea-1103-4ca5-97e1-531e55f6bc84(qn::3646295)
|
||||
// "6f240062-2451-4212-a22d-abecc73ae0d9",///tip4->63a321ea-1103-4ca5-97e1-531e55f6bc84(qn::3646295)
|
||||
///phasing error -> ONT specific bias && HPC intoduce fake SNPs && the DP was to nice for the following SNPs, which we need to fix as high-sequencing depth we have more such cases
|
||||
// +[M::gen_rphase_dp0_single_path_hybrid_0_multi] rn::2 hf_only::0
|
||||
// +[M::gen_rphase_dp0_single_path_hybrid_0_multi] site::175009 sc::2 n0::57 n1::3 rn::2 krn::2 b0l::16 b0h::41 b1l::0 b1h::3
|
||||
// +[M::gen_rphase_dp0_single_path_hybrid_0_multi] site::82558 sc::-1 n0::80 n1::4 rn::2 krn::2 b0l::4 b0h::76 b1l::2 b1h::2
|
||||
|
||||
"a72d3f7f-d74f-48ab-a3f7-5ecc74ad08ff",///tip5, contained read issue
|
||||
// "a72d3f7f-d74f-48ab-a3f7-5ecc74ad08ff",///tip5, contained read issue
|
||||
"19af141e-d049-4229-a8b4-58aab021cca1",
|
||||
"fb9370c5-2932-468c-a431-c141ca2d3787",
|
||||
"e36a655f-984d-4f1d-8092-4404a7f99313",
|
||||
};
|
||||
if(ids0) {
|
||||
ids = ids0; n = n0;
|
||||
@@ -468,8 +471,11 @@ void hc_dbg_prt_ma_hit_t(const char *ids0[], uint64_t n0, const uint64_t iids0[]
|
||||
///3799659,///tip 1, contained read issue
|
||||
///3313150,///tip 2, contained read issue
|
||||
///4192664,///tip3, contained read issue
|
||||
508213,///tip4
|
||||
3203512,///tip5
|
||||
// 508213,///tip4
|
||||
// 3203512,///tip5
|
||||
3163025,
|
||||
3727972,
|
||||
3567631
|
||||
};
|
||||
if(iids0) {
|
||||
iids = iids0; ni = ni0;
|
||||
@@ -3183,6 +3189,20 @@ double ou_drop_rate, int64_t max_tip, int64_t gap_fuzz, bub_label_t *b_mask_t, i
|
||||
double drop = min_ovlp_drop_ratio;
|
||||
int64_t i; asg64_v bu = {0,0,0}, ba = {0,0,0}; uint32_t l_drop = 2000; flex_asg_t *fg = NULL; uint32_t min_diff = 0, step_diff = 2000;
|
||||
if(is_ou) fg = init_flex_asg_t(sg, uopt->sources, uopt->min_ovlp, uopt->max_hang, asm_opt.max_hang_rate, gap_fuzz);
|
||||
|
||||
/**
|
||||
const char *dbg_ids[] = {
|
||||
"19af141e-d049-4229-a8b4-58aab021cca1",
|
||||
"fb9370c5-2932-468c-a431-c141ca2d3787",
|
||||
"e36a655f-984d-4f1d-8092-4404a7f99313",
|
||||
};
|
||||
const uint64_t dbg_ids_n[] = {
|
||||
3163025,
|
||||
3727972,
|
||||
3567631
|
||||
};
|
||||
**/
|
||||
|
||||
// prt_specfic_sge(sg, 22708, 22646, "--sa--");
|
||||
// if(is_ou) update_sg_uo(sg, src);///do not do it here
|
||||
// print_debug_gfa(sg, NULL, uopt->coverage_cut, "UL.dirty.debug", uopt->sources, uopt->ruIndex, uopt->max_hang, uopt->min_ovlp, 1, 0, 0);
|
||||
@@ -3231,9 +3251,15 @@ double ou_drop_rate, int64_t max_tip, int64_t gap_fuzz, bub_label_t *b_mask_t, i
|
||||
// stats_chimeric(sg, src, &bu);
|
||||
if(!is_ou) asg_iterative_semi_circ(sg, src, &bu, max_tip, 1, uopt->te);///p_telo
|
||||
// hc_dbg_prt_ma_hit_t(NULL, 0, NULL, 0, "clen_c_3", NULL, rI, NULL, sg);
|
||||
asg_arc_identify_simple_bubbles_multi(sg, b_mask_t, 1);
|
||||
asg_arc_cut_chimeric(sg, src, &bu, is_ou?ou_thres:(uint32_t)-1, uopt->te);///p_telo
|
||||
// hc_dbg_prt_ma_hit_t(NULL, 0, NULL, 0, "clen_c_4", NULL, rI, NULL, sg);
|
||||
// if(i == 0) {
|
||||
// print_debug_gfa(sg, NULL, uopt->coverage_cut, "UL.dirty3.debug", uopt->sources, uopt->ruIndex, uopt->max_hang, uopt->min_ovlp, 1, 0, 0);
|
||||
// exit(1);
|
||||
// }
|
||||
if(!(asm_opt.is_ont)) {
|
||||
asg_arc_identify_simple_bubbles_multi(sg, b_mask_t, 1);
|
||||
asg_arc_cut_chimeric(sg, src, &bu, is_ou?ou_thres:(uint32_t)-1, uopt->te);///p_telo
|
||||
// hc_dbg_prt_ma_hit_t(NULL, 0, NULL, 0, "clen_c_4", NULL, rI, NULL, sg);
|
||||
}
|
||||
|
||||
asg_arc_cut_tips(sg, max_tip, &bu, is_ou, is_ou?rI:NULL, uopt->te);
|
||||
// hc_dbg_prt_ma_hit_t(NULL, 0, NULL, 0, "clen_c_5", NULL, rI, NULL, sg);
|
||||
|
||||
@@ -5,6 +5,15 @@
|
||||
#include "Process_Read.h"
|
||||
#include "CommandLines.h"
|
||||
|
||||
typedef struct { // this struct is not strictly necessary; we can use k_mer_pos instead, with modifications
|
||||
uint64_t srt;
|
||||
uint32_t self_off;
|
||||
uint32_t other_off;
|
||||
uint32_t cnt;
|
||||
} anchor1_t;
|
||||
|
||||
typedef struct {uint32_t n, m; anchor1_t *a;} anchor1_t_v;
|
||||
|
||||
typedef struct {
|
||||
size_t n, m;
|
||||
uint64_t *a;
|
||||
|
||||
Reference in New Issue
Block a user