Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def constrainedMatchPair(firstMatch, secondMatch, length):
- constrainedList = []
- for i in range(len(firstMatch)):
- for j in range(len(secondMatch)):
- if secondMatch[j] == firstMatch[i] + length + 1:
- constrainedList.append(firstMatch[i])
- constrainedTuple = tuple(constrainedList)
- return constrainedTuple
- def subStringMatchOneSub(key,target):
- """search for all locations of key in target, with one substitution"""
- allAnswers = ()
- for miss in range(0,len(key)):
- # miss picks location for missing element
- # key1 and key2 are substrings to match
- key1 = key[:miss]
- key2 = key[miss+1:]
- #print 'breaking key',key,'into',key1,key2
- # match1 and match2 are tuples of locations of start of matches
- # for each substring in target
- match1 = subStringMatchExact(target,key1)
- match2 = subStringMatchExact(target,key2)
- # when we get here, we have two tuples of start points
- # need to filter pairs to decide which are correct
- filtered = constrainedMatchPair(match1,match2,len(key1))
- allAnswers = allAnswers + filtered
- #print 'match1',match1
- #print 'match2',match2
- #print 'possible matches for',key1,key2,'start at',filtered
- return allAnswers
- ##target1 = 'atgacatgcacaagtatgcat'
- ##target2 = 'atgaatgcatggatgtaaatgcag'
- ### key strings
- ##key10 = 'a'
- ##key11 = 'atg'
- ##key12 = 'atgc'
- ##key13 = 'atgca'
- ##print subStringMatchOneSub(key10,target1)
- ##print subStringMatchOneSub(key11,target1)
- ##print subStringMatchOneSub(key12,target1)
- ##print subStringMatchOneSub(key13,target1)
- ##print subStringMatchOneSub(key10,target2)
- ##print subStringMatchOneSub(key11,target2)
- ##print subStringMatchOneSub(key12,target2)
- ##print subStringMatchOneSub(key13,target2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement