From ff7f627adcf1325ecad3413432da00c6752359d4 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 25 Oct 2023 15:57:46 -0400 Subject: [PATCH] perf(call): use cat_strs partial + cache read cn when finding rare realigns --- strkit/call/call_locus.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/strkit/call/call_locus.py b/strkit/call/call_locus.py index bdbb77d..f207077 100644 --- a/strkit/call/call_locus.py +++ b/strkit/call/call_locus.py @@ -387,7 +387,7 @@ def call_alleles_with_incorporated_snvs( read["snvu"] = read_useful_snv_bases # Store read-level 'useful' SNVs if print_snvs: - print(rn, f"\t{read['cn']:.0f}", "\t", "".join(read_useful_snv_bases), n_non_blank_read_useful_snv_bases) + print(rn, f"\t{read['cn']:.0f}", "\t", cat_strs(read_useful_snv_bases), n_non_blank_read_useful_snv_bases) n_reads_with_many_snvs: int = len(read_dict_items_with_many_snvs) n_reads_with_at_least_one_snv: int = len(read_dict_items_with_at_least_one_snv) @@ -917,7 +917,8 @@ def call_locus( # reference genome. If we have a rare realignment (e.g., a large expansion), we cannot use SNVs. have_rare_realigns: bool = False for rn, read in read_dict_items: - n_same_cn_no_realign = sum(1 for _, r2 in read_dict_items if not r2.get("realn") and r2["cn"] == read["cn"]) + read_cn = read["cn"] + n_same_cn_no_realign = sum(1 for _, r2 in read_dict_items if not r2.get("realn") and r2["cn"] == read_cn) if read.get("realn") and n_same_cn_no_realign == 0: have_rare_realigns = True break