Skip to content

Commit 2c34235

Browse files
authored
nrepeat function improvement (#15)
* feat(oligos): Minor ~10% speed improvement of nrepeats_py function. * feat(oligos): Minor minor speed up clean up of nrepeats py function.
1 parent 28208ee commit 2c34235

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/designer_dna/oligos.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -283,19 +283,20 @@ def nrepeats_py(sequence: str, n: int) -> int:
283283
nrepeats_py("ACAACAACA", 3) == 2 # True
284284
285285
"""
286-
previous: list[str] = [sequence[i : n + i] for i in range(n)]
287-
current: list[int] = [0] * n
288286
max_val: int = 0
287+
length: int = len(sequence)
289288

290-
for j in range(n, len(sequence), n):
291-
for k in range(n):
289+
for k in range(n):
290+
previous: str = sequence[k : n + k]
291+
current: int = 0
292+
for j in range(n, length, n):
292293
phase: str = sequence[j + k : j + k + n]
293-
if phase == previous[k]:
294-
current[k] += 1
295-
if current[k] > max_val:
296-
max_val = current[k]
294+
if phase == previous:
295+
current += 1
296+
if current > max_val:
297+
max_val = current
297298
else:
298-
current[k] = 0
299-
previous[k] = phase
299+
current = 0
300+
previous = phase
300301

301302
return max_val

0 commit comments

Comments
 (0)