Package Bio :: Package Mindy :: Module Location
[hide private]
[frames] | no frames]

Source Code for Module Bio.Mindy.Location

 1  import compression 
 2   
3 -class Location:
4 """Handle for a record (use 'text' to get the record's text)"""
5 - def __init__(self, namespace, name, filename, startpos, length):
6 self.namespace = namespace 7 self.name = name 8 self.filename = filename 9 self.startpos = startpos 10 self.length = length
11 - def __repr__(self):
12 return "Location(namespace = %r, name = %r, filename = %r, startpos = %r, length = %r)" % (self.namespace, self.name, self.filename, self.startpos, self.length)
13 - def __str__(self):
14 return "Location(%s:%s at %s: %s, %s)" % \ 15 (self.namespace, self.name, 16 self.filename,self.startpos, self.length)
17 - def __getattr__(self, key):
18 if key == "text": 19 infile = compression.open_file(self.filename) 20 if hasattr(infile, "seek"): 21 infile.seek(self.startpos) 22 return infile.read(self.length) 23 # read 1MB chunks at a time 24 CHUNKSIZE = 1000000 25 count = 0 26 while count + CHUNKSIZE < self.startpos: 27 infile.read(CHUNKSIZE) 28 count += CHUNKSIZE 29 infile.read(self.startpos - count) 30 return infile.read(self.length) 31 elif key == "__members__": 32 return ["text"] 33 raise AttributeError(key)
34