Skip to content

Instantly share code, notes, and snippets.

@terrycojones
Last active August 29, 2015 14:10
Show Gist options
  • Save terrycojones/06ae20327eeabfd59f24 to your computer and use it in GitHub Desktop.
Save terrycojones/06ae20327eeabfd59f24 to your computer and use it in GitHub Desktop.
class ScannedReadDatabase(object):
"""
Maintain a collection of reads and provide for database (index, search)
operations on them.
@param landmarkFinderClasses: A C{list} of landmark classes.
@param trigPointFinderClasses: A C{list} of trig point classes.
"""
def __init__(self, landmarkFinderClasses, trigPointFinderClasses):
self.landmarkFinderClasses = landmarkFinderClasses
self.trigPointFinderClasses = trigPointFinderClasses
self.reads = []
def makeSearchDictionary(self):
"""
"""
d = defaultdict(set)
landmarkFinders = []
for landmarkFinderClass in self.landmarkFinderClasses:
landmarkFinders.append(landmarkFinderClass().find)
trigPointFinders = []
for trigPointFinderClass in self.trigPointFinderClasses:
trigPointFinders.append(trigPointFinderClass().find)
for read in self.reads:
scannedRead = ScannedRead(read)
for landmarkFinder in landmarkFinders:
for landmark in landmarkFinder(read):
scannedRead.landmarks.append(landmark)
for trigFinder in trigFinders:
for trigPoint in trigFinder(read):
scannedRead.trigPoints.append(trigPoint)
for landmark, trigPoint in read.getPairs():
key = '%s:%s:%s' % (landmark.hashkey(), trigPoint.hashkey(),
landmark.offset - trigPoint.offset)
d[key].add(read.id)
return d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment