1 """Wrap ucsc command line utilities
7 from subprocess import Popen, PIPE
9 LOGGER = logging.getLogger(__name__)
11 def parseNumber(number):
23 return float(''.join(buffer))
25 return int(''.join(buffer))
27 def parseBoolean(value):
28 if value.lower() in ('yes', '1', 'true'):
30 elif value.lower() in ('no', '0', 'false'):
34 def __init__(self, filename=None):
36 self.isCompressed = None
38 self.primaryDataSize = None
39 self.primaryIndexSize = None
40 self.zoomLevels = None
41 self.chromCount = None
42 self.basesCovered = None
49 self.scan_file(filename)
50 self.filename = filename
52 def scan_file(self, filename):
56 p = Popen(cmd, stdout=PIPE)
57 stdout, _ = p.communicate()
58 for line in stdout.split(os.linesep):
60 term, value = line.split(': ')
61 if term in ('isCompressed', 'isSwapped'):
62 value = parseBoolean(value)
64 value = parseNumber(value)
65 LOGGER.debug('%s: %s', term, str(value))
66 setattr(self, term, value)
68 LOGGER.error("Exception %s trying to run: %s", str(e), ' '.join(cmd))