-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathisPatternUnique.py
46 lines (35 loc) · 1.34 KB
/
isPatternUnique.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import character as ch
import gregexprindex as gr
import translatePattern as tP
from Bio.Seq import Seq
import biostrings as bio
def isPatternUnique(seq, patterns):
if seq == None and patterns == None and len(seq) == 0 and len(patterns) == 0:
IsUnique = "NA"
else:
IsUnique = ch.character(len(patterns))
seq = str(seq)
for i in range(len(patterns)):
pattern = patterns.iloc[i, 1]
revpattern = Seq(pattern).reverse_complement()
pattern = str(pattern)
if len(pattern) == 0:
IsUnique[i] = "NA"
continue
pattern = tP.translatePattern(pattern)
revpattern = str(revpattern)
revpattern = tP.translatePattern(revpattern)
resplus = gr.gregexpr_index(pattern, seq)
nplus = len(resplus)
if revpattern != pattern:
resminus = gr.gregexpr_index(revpattern, seq)
nminus = len(resminus)
else:
nminus = 0
if nplus + nminus > 1:
IsUnique[i] = "No"
elif nplus + nminus == 1:
IsUnique[i] = "Yes"
else:
IsUnique[i] = "Not Found"
return IsUnique