This precisely answered my question. John, Thanks!
• 0 views
•
link
I try to find all the possible "N20NGG" sequence in a target sequnce like:
example_seq ATTAATACTTTTAACAATTGTAGTATATAAAAAAGGGAGTAACCGAAAACGGTCGGGACCGAAAACGG
What I used is python regular expression:
import re
example_seq = "ATTAATACTTTTAACAATTGTAGTATATAAAAAAGGGAGTAACCGAAAACGGTCGGGACCGAAAACGG"
pattern = re.compile(r'(.{20}).GG')
all_matched_seq = pattern.finditer(example_seq)
for record in all_matched_seq:
print(record.group(1), end="\t")
print(record.span())
I ony got two matched sequences:
My script failed to retrieve the other 4 matched sequences:
CAATTGTAGTATATAAAAAA; AAAAAGGGAGTAACCGAAAA; AGGGAGTAACCGAAAACGGT; GGGAGTAACCGAAAACGGTC;
How can I modify my script to get all the reasonable ones?
Regex's by default in python are non-overlapping. You have to use the lookahead operator ?=
import re
example_seq = 'ATTAATACTTTTAACAATTGTAGTATATAAAAAAGGGAGTAACCGAAAACGGTCGGGACCGAAAACGG'
pattern = re.compile(r'(?=((.{21})GG))')
all_matched_seq = pattern.finditer(example_seq)
for record in all_matched_seq:
print(record.group(1), end="\t")
print(record.span())
ACAATTGTAGTATATAAAAAAGG (13, 13) CAATTGTAGTATATAAAAAAGGG (14, 14) AAAAAGGGAGTAACCGAAAACGG (29, 29) AGGGAGTAACCGAAAACGGTCGG (33, 33) GGGAGTAACCGAAAACGGTCGGG (34, 34) AAAACGGTCGGGACCGAAAACGG (45, 45)
Log in to answer this question.