1 """Wrap ucsc command line utilities
6 from subprocess import Popen, PIPE
8 LOGGER = logging.getLogger(__name__)
10 def parseNumber(number):
22 return float(''.join(buffer))
24 return int(''.join(buffer))
26 def parseBoolean(value):
27 if value.lower() in ('yes', '1', 'true'):
29 elif value.lower() in ('no', '0', 'false'):
33 def __init__(self, filename=None):
35 self.isCompressed = None
37 self.primaryDataSize = None
38 self.primaryIndexSize = None
39 self.zoomLevels = None
40 self.chromCount = None
41 self.basesCovered = None
48 self.scan_file(filename)
49 self.filename = filename
51 def scan_file(self, filename):
54 p = Popen(cmd, stdout=PIPE)
55 stdout, _ = p.communicate()
56 for line in stdout.split(os.linesep):
58 term, value = line.split(': ')
59 if term in ('isCompressed', 'isSwapped'):
60 value = parseBoolean(value)
62 value = parseNumber(value)
63 LOGGER.debug('%s: %s', term, str(value))
64 setattr(self, term, value)