Skip to content

Commit 78dc22c

Browse files
committed
introduce new attributes for total length and constant length and fix bug
1 parent c310094 commit 78dc22c

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

anglerfish/demux/adaptor.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,7 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
6868
self.name: str = name
6969
self.index_seq: str | None = index_seq
7070

71-
# Type declaration of attributes to be assigned
72-
self.len_before_index: int | None
73-
self.len_after_index: int | None
74-
self.len_umi_before_index: int | None
75-
self.len_umi_after_index: int | None
76-
77-
# Index
71+
# Index bool and len
7872
if has_match(INDEX_TOKEN, self.sequence_token):
7973
split_by_index = re.split(INDEX_TOKEN, self.sequence_token)
8074

@@ -85,7 +79,7 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
8579
self.has_index = False
8680
self.len_index = 0
8781

88-
# UMI
82+
# UMI bool and len
8983
umi_tokens = re.findall(UMI_TOKEN, self.sequence_token)
9084
if len(umi_tokens) > 1:
9185
raise UserWarning(
@@ -100,6 +94,14 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
10094
self.has_umi = False
10195
self.len_umi = 0
10296

97+
# Type declaration of attributes to be assigned
98+
self.len_before_index: int | None
99+
self.len_after_index: int | None
100+
self.len_umi_before_index: int | None
101+
self.len_umi_after_index: int | None
102+
self.len_total: int | None
103+
self.len_constant: int
104+
103105
# Lengths
104106
if self.has_index and self.has_umi:
105107
# Index and UMI
@@ -147,6 +149,9 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
147149
self.len_before_index = None
148150
self.len_after_index = None
149151

152+
self.len_total = len(self.get_mask(insert_Ns=True)) if self.index_seq else None
153+
self.len_constant = len(self.get_mask(insert_Ns=False))
154+
150155
def get_mask(self, insert_Ns: bool = True) -> str:
151156
"""Get the mask of the adaptor part.
152157
@@ -172,7 +177,9 @@ def get_mask(self, insert_Ns: bool = True) -> str:
172177
and self.index_seq is None
173178
and insert_Ns
174179
):
175-
raise UserWarning("Adaptor has i5 but no sequence was specified")
180+
raise UserWarning(
181+
f"Can't create mask for adaptor '{self.name}' with unspecified index."
182+
)
176183

177184
if self.index_seq is not None or not insert_Ns:
178185
mask = re.sub(INDEX_TOKEN, "N" * index_mask_length, self.sequence_token)

anglerfish/explore/explore.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,7 @@ def run_explore(
134134
match_col_df
135135
)
136136

137-
thres = round(
138-
(adaptor_end.len_before_index + adaptor_end.len_after_index)
139-
* good_hit_threshold
140-
)
137+
thres = round(adaptor_end.len_constant * good_hit_threshold)
141138
df_good_hits = df_good_hits[df_good_hits["match_1_len"] >= thres]
142139

143140
median_insert_length = None

0 commit comments

Comments
 (0)